ScrumIA
Claude Code plugin marketplace

Your project,
your workflow,
your modules.

Scoping, specs, tickets, code, reviews — each one a Claude Code plugin. Replace the one that stops fitting, add the one nothing covered yet.

7slots 12modules shipped 3human touchpoints

Seven steps. Three of them are you.

One idea, from a sentence to a merged pull request. Three of its seven steps wait for a person; the other four run without one.

01

Brief

An idea, a problem. Nothing formatted.

Human
02

Scoping

Challenged and split.→ issues + specs

Agent
03

Refinement

Each role weighs in.→ Ready for dev

Agent
04

Sign-off

Only on doubt, risk or criticality.

Human
05

Sprint

No tickets collide.→ To dev

Agent
06

Build

One worktree each.→ spec, code, PR

Agent
07

Merge

You read it and test.→ Done

Human

Human — 3 of 7 Agents — 4 of 7 Swap a module and this line changes shape.

You brief

You state the problem. The agents challenge it; you settle what blocks them.

You sign off

Only on designs that are doubtful, critical or risky. The rest just ships.

You merge

The final call stays yours, unless you delegate it in writing.

Slots

A slot is a question. A module is one answer. Below is this repo's real composition, read from .scrumia/config.yaml — nothing is faked in their place.

specs Where do specs live, in what shape? scrumia-specs

One directory per feature, files created only when they have something to say, acceptance criteria written first and turned into tests.

tracker Where does state live — tickets, columns, PRs? scrumia-github-project

GitHub Issues and Projects. Nothing stateful in the repo, and a hook that refuses the commit which tries.

team Which standing roles, with what scope? scrumia-teams

Manager, business, tech — plus a designer contributed by the design module. Each boundary is a line of refusal, and every role toggles by config.

discovery How does an idea become scoped work? scrumia-discovery

scrumia-discovery is installed here. An idea gets a scoping pass before it becomes a ticket: scrumia-brainstorm opens the question, scrumia-split cuts what comes out of it into issues.

implementation How is code written, per app? nothing installed

This product ships markdown. Its two code apps — a static site and a validation script — carry no implementation module, so the instruction is to follow the neighbouring code instead of inventing a doctrine.

design Where does the design system live? scrumia-design

Identity, tokens and components as files in the repo, synced one at a time with a Claude Design project. A value the tokens don't carry is a finding, not an exception — including on this page.

Compose your team

Six slots, six decisions — including the ones you leave empty on purpose. Same index as above, except here you answer it: the rows write your install commands and the .scrumia/config.yaml that scrumia-init verifies.

Start from

specs Where do specs live, in what shape? scrumia-specs nothing installed

tracker Where does state live — tickets, columns, PRs? scrumia-github-project yours to write nothing installed

team Which standing roles, with what scope? scrumia-teams nothing installed

discovery How does an idea become scoped work? scrumia-discovery nothing installed

implementation How is code written, per app? scrumia-impl-rust scrumia-impl-solidjs scrumia-impl-reactjs scrumia-kotlin scrumia-kotlin-multiplatform-mobile nothing installed

Empty: agents follow the neighbouring code — normal behaviour, not a gap. The cost arrives with the first file of a new stack, where there is no neighbour to follow.

design Where does the design system live? scrumia-design nothing installed

Additions

Modules that fill no slot. Adding none is a complete composition.

not added — a key needs its source: local:, shared:, or owner/repo:

Install run these in Claude Code

# add the marketplace once
/plugin marketplace add tibs245/scrumia

# install your composition
/plugin install scrumia-core@scrumia
/plugin install scrumia-specs@scrumia
/plugin install scrumia-github-project@scrumia
/plugin install scrumia-teams@scrumia
/plugin install scrumia-discovery@scrumia
/plugin install scrumia-design@scrumia
/plugin install scrumia-impl-rust@scrumia
/plugin install scrumia-impl-solidjs@scrumia

# then, inside the repo to set up
/scrumia-core:scrumia-init

.scrumia/config.yaml commit it, then scrumia-init verifies it instead of asking again

# Generated by the composer — review, then commit
project:
  name: your-project
  repo: you/your-repo   # replace these two with yours

modules:
  "tibs245/scrumia:scrumia-specs": {}
  "tibs245/scrumia:scrumia-github-project": {}
  "tibs245/scrumia:scrumia-teams": {}
  "tibs245/scrumia:scrumia-discovery": {}
  "tibs245/scrumia:scrumia-design": {}

apps:
  - name: api
    path: apps/api
    type: backend
    modules:
      "tibs245/scrumia:scrumia-impl-rust": {}
  - name: web
    path: apps/web
    type: frontend
    modules:
      "tibs245/scrumia:scrumia-impl-solidjs": {}

Extends

A skill declares where it can be extended; any module answers, and nothing is stored — so nothing goes stale.

Declaresscrumia-github-project scrumia-ticket

Registerimplement

Contributes
  • scrumia-design
  • scrumia-specs

Declaresscrumia-teams scrumia-sprint

Registersprint

Contributesno contribution

Ask, and this project's own composition answers:

scrumia-extends implement
DirectiveWhat it saysFrom
Design system firstRead the identity and the tokens before writing anything a user looks at; never inline a valuescrumia-design
One test per acceptance criterionCriteria carry stable identifiers and become the tests — that is what makes them acceptance criteriascrumia-specs
The spec is written firstLoad the feature that owns the rule before writing code, and update it when the rule movesscrumia-specs

The table above is not read from anywhere: it was computed the moment you asked, so it cannot go stale. This is what can be added without replacing anything — see Slots for what can be replaced instead. Writing a contribution of your own is the reference's job, not this page's.

Modules

Twelve shipped. Each is a standard Claude Code plugin — install what you need.

🧩 scrumia-core kernel

Describes the active composition and writes it into CLAUDE.md. Fills no slot.

availablerequired2 skills
/plugin install scrumia-core@scrumia
⚖️ scrumia-rules no slot

Rule sections a project can own: index, guides, decisions — no rule without its why.

available4 skills
/plugin install scrumia-rules@scrumia
📐 scrumia-specs specs

Per-feature specs, TDD-oriented. A file catalog instead of one document.

available3 skills
/plugin install scrumia-specs@scrumia
📋 scrumia-github-project tracker

Issues, sub-issues, Projects columns, branches and PRs. Requires gh.

available5 skills1 hook
/plugin install scrumia-github-project@scrumia
👥 scrumia-teams team

Standing roles and sprint execution in dynamic workflows. Roles are configurable.

available3 agents2 skills
/plugin install scrumia-teams@scrumia
💡 scrumia-discovery discovery

Challenges an idea until it can be split, then ships specs on a branch.

available2 skills
/plugin install scrumia-discovery@scrumia
🦀 scrumia-impl-rust implementation

Invalid states unrepresentable, typed errors per layer, one test per invariant — plus an audit skill for existing code.

available2 skills
/plugin install scrumia-impl-rust@scrumia
⚛️ scrumia-impl-solidjs implementation

Fine-grained reactivity without React reflexes, behaviour-first component tests — plus an audit skill.

available2 skills
/plugin install scrumia-impl-solidjs@scrumia
🔷 scrumia-impl-reactjs implementation

Server Components by default, Actions for mutations, derived state during render, behaviour-first component tests — plus an audit skill.

available2 skills
/plugin install scrumia-impl-reactjs@scrumia
🔴 scrumia-tdd no slot

The cycle operationalized for an agent, the mock boundary, AC-to-test mapping. Reference, audit, refactor.

available3 skills
/plugin install scrumia-tdd@scrumia

The five principles, each with its limit. Audits violations and over-applications alike. Reference, audit, refactor.

available3 skills
/plugin install scrumia-solid-principles@scrumia
🔄 scrumia-tanstack-query no slot

Query keys, options, mutations, testing — 9 guides, 13 decisions, ported from real monorepo use.

available1 skills
/plugin install scrumia-tanstack-query@scrumia
📝 scrumia-rhf no slot

Declarative forms for React: a resolver, registered inputs, state through the library. Three refusals, one audit, scoped to scrumia-impl-reactjs.

available1 skills
/plugin install scrumia-rhf@scrumia

The compound component pattern, framework-agnostic: parts reach the parent through context (or its framework equivalent), sub-components travel with the parent, the public API is one symbol. React, Vue, Solid and Angular, in each framework's idiom.

available1 skills
claude plugin install scrumia-compound-design@scrumia
🛡️ scrumia-zod no slot

The schema is the source of truth, errors are field-targeted where a user reads them, and parsing happens at the trust boundary — not on values the compiler already proved. Pinned to Zod v4, with an audit skill and a boundary detector.

available1 skills
/plugin install scrumia-zod@scrumia
🎨 scrumia-design design

Identity, tokens and components in the repo, synced one at a time with Claude Design. Ships the designer role and an audit that reports drift and mutedness alike.

available
claude plugin install scrumia-design@scrumia
scrumia-html-css no slot

Semantic elements over ARIA roles, the element that matches the purpose, tests that query through the layer the user meets — three refusal rules, one audit skill.

available1 skills
claude plugin install scrumia-html-css@scrumia
⚙️ scrumia-gradle no slot

Gradle the build tool, stated in Gradle's terms — Kotlin DSL over Groovy, version catalogs, the shape of convention plugins, lazy task configuration, the build and configuration caches, composite builds, pluginManagement. Eight rules, an audit skill that measures an existing Gradle project against them.

available1 skills
claude plugin install scrumia-gradle@scrumia
🪟 scrumia-material3 no slot

Material 3 the UI system, stated in Material 3's terms — Compose as the default toolkit, Views as an explicit choice, tokens and components pulled from Material 3 rather than reinvented per project. Eight rules, an audit skill that measures an existing Android or Kotlin Multiplatform Mobile surface against them.

available1 skills
claude plugin install scrumia-material3@scrumia

The Kotlin Multiplatform Mobile composition preset — six KMP-specific rule families (expect/actual across source sets, source-set layout, iOS/Android split, Cocoapods and Swift interop, target declaration, KMP-shaped Gradle wiring) and a single key that re-exports the six satellites a KMP project runs.

available1 skills
claude plugin install scrumia-kotlin-multiplatform-mobile@scrumia
🛜 scrumia-ktor no slot

HTTP server and client rules for a Ktor codebase — routing declared as a tree, content negotiation installed once, a long-lived HttpClient, named authentication providers, tests on the in-memory engine, configuration outside the code, and a stated choice between WebSockets and SSE. Nine rule families, an audit skill that measures a Ktor project against them.

available1 skills
claude plugin install scrumia-ktor@scrumia
🟣 scrumia-kotlin implementation

Idiomatic Kotlin language rules — val/var, null-safety and platform types, coroutines and Flow, data/sealed/value classes, object vs companion vs top-level, and visibility. Six rule families, a reference skill, and an audit skill that measures a Kotlin codebase against the six.

available2 skills
claude plugin install scrumia-kotlin@scrumia
🎭 scrumia-effect no slot

Effects as values, not exceptions — the typed-effect discipline that sits above Result, Either, IO/suspend, and effect.website without substituting for any of them. Six refusals, a reference skill, and ten guides spanning the discipline and the four approaches.

available1 skills
claude plugin install scrumia-effect@scrumia

The Functional Programming paradigm, language-neutral — purity, total functions, referential transparency, immutability by default, composition over inheritance, and effect discipline. A reference skill and a vocabulary check that enforces the rule fragments stay language-agnostic.

available1 skills
claude plugin install scrumia-functional-programming@scrumia

Install

Prerequisites: git, an authenticated gh CLI (for the GitHub tracker), and jq (for the guard hook). scrumia-init checks all three and says what degrades if one is missing.

# add the marketplace, install the kernel
/plugin marketplace add tibs245/scrumia
/plugin install scrumia-core@scrumia

# then, in the repo to set up
/scrumia-core:scrumia-init

Your composition

Here's what ScrumIA sees in this repository, read from .scrumia/config.yaml. Nothing is guessed: every slot is real, every module installed or empty on purpose.

ScrumIA composition — ScrumIA (tibs245/scrumia)

  Modules this project declares
  ──────────────────────────────────────
  tibs245/scrumia:scrumia-specs
      root=features, strates=["business","app"]
  tibs245/scrumia:scrumia-github-project
      autonomy={"level":"guided","auto_merge":[]}, project=ScrumIA,
      project_number=6, columns=["Backlog","Ready for dev","To dev","In
      progress","In review","Done"],
      board={"field_id":"PVTSSF_lAHOAD9HXc4Bfw4JzhaBcjo","options":{"Backlog":"7f19f379","Ready
      for dev":"0b9c70dd","To dev":"9678ee59","In progress":"08535749","In
      review":"3eb1c894","Done":"4daf8741"},"flow":{"ready":"Ready for
      dev","in_progress":"In progress","in_review":"In review","done":"Done"}}
  tibs245/scrumia:scrumia-teams
      execution={"unlabeled":"sonnet","unrated_risk":"medium","labels":{"scope_prefix":"scope/","risk_prefix":"risk/"},"matrix":{"S":{"low":"sonnet","medium":"sonnet","high":"sonnet","critical":"opus"},"M":{"low":"sonnet","medium":"opus","high":"opus","critical":"opus"},"L":{"low":"opus","medium":"opus","high":"opus","critical":"opus"},"XL":{"low":"split_or_opus","medium":"split_or_opus","high":"split_or_opus","critical":"split_or_opus"}}},
      escalation={"to_human":["disagreement between roles","missing business
      rule","contract change consumed by another app"]},
      sprint={"max_tickets":5}
  tibs245/scrumia:scrumia-discovery
  tibs245/scrumia:scrumia-design
      root=design, remote=claude-design,
      project_id=67f47e14-97d0-4e2b-8a10-abb2b2d5e51f

  App    Path   Modules
  ─────────────────────
  site   site   none
  tools  tools  none

  What each module contributes, and to which register: scrumia-extends --list.
  Change any of this with /scrumia-core:scrumia-compose.

scrumia-init maps your apps, proposes a composition, offers the install command for each module it needs, and writes the composition into CLAUDE.md. Re-running it checks instead of overwriting.