orchestrix-skills 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: design-architecture
3
+ description: Use when a feature needs a new or changed architectural decision — a service, data model, cross-cutting pattern, or external integration — before stories are drafted.
4
+ license: MIT
5
+ allowed-tools: [Read, Write, Grep, Glob]
6
+ metadata:
7
+ contract:
8
+ inputs: [requirement, system_context]
9
+ reads: [architecture/*, registry/api, registry/db]
10
+ outputs: [specs/<slug>-arch.md]
11
+ updates: [architecture/decisions, registry/api?, registry/db?]
12
+ authority: "Write to the specs namespace (default docs/specs/) and update the architecture KB / registry. No source code, no production."
13
+ verify: "States the alternatives and the rationale; consistent with existing decisions (or explicitly supersedes one); no placeholder."
14
+ accept:
15
+ when: "Always — an architecture decision is foundational; the whole build rests on it."
16
+ timing: inline
17
+ ---
18
+
19
+ # Design Architecture
20
+
21
+ Make one architectural decision a feature needs, with its rationale, and record
22
+ it durably — before any story is drafted on top of it.
23
+
24
+ **Core principle:** Decide deliberately and record why. A wrong foundation
25
+ discovered late wastes the whole build, so this is a gated, foundational step —
26
+ not something `implement` should improvise.
27
+
28
+ ## Process
29
+
30
+ 1. **Read the slice.** Load relevant `architecture/*` decisions and the
31
+ `registry/api` + `registry/db` facts. Understand what already exists.
32
+ 2. **State the decision needed.** One sentence: what must be decided and why it
33
+ came up now.
34
+ 3. **Weigh 2–3 alternatives** with trade-offs; pick one; say why the others lose.
35
+ 4. **Check consistency.** It must not contradict an existing decision. If it
36
+ must, explicitly supersede that decision — never silently diverge.
37
+ 5. **Scope it.** Decide only what this feature forces. Don't design the whole
38
+ system (YAGNI); leave future decisions to future features.
39
+
40
+ ## Outputs
41
+
42
+ **Per-feature record** — `specs/<slug>-arch.md`:
43
+
44
+ ```markdown
45
+ # <Feature> — Architecture Decision
46
+
47
+ ## Decision — one line.
48
+
49
+ ## Context — why it came up.
50
+
51
+ ## Alternatives — what was rejected and why.
52
+
53
+ ## Impact — affected modules, data, interfaces.
54
+ ```
55
+
56
+ **Durable record (metabolism)** — append an ADR to `architecture/decisions`
57
+ (append/supersede, with provenance). If the decision adds or changes endpoints or
58
+ data models, update `registry/api` / `registry/db` so downstream skills read the
59
+ new facts.
60
+
61
+ ## Done
62
+
63
+ Write the decision, update the KB, then stop for approval (`accept: inline`). On
64
+ approval the orchestrator wires `draft-story`, which reads the updated
65
+ `architecture/*` and `registry/*`.
@@ -0,0 +1,83 @@
1
+ ---
2
+ name: design-review
3
+ description: Use after a UI feature is built and running, before merging, to review the rendered interface against its UI spec, the design system, and world-class craft.
4
+ license: MIT
5
+ allowed-tools: [Read, Bash, Grep, Glob]
6
+ metadata:
7
+ contract:
8
+ inputs: [built_ui, ui_spec]
9
+ reads: [taste/design-system, taste/brand]
10
+ outputs: [design_review_report]
11
+ authority: "Read-only on code; render and screenshot the running UI. No edits, no commits, no production."
12
+ verify: "Report is based on actual rendered screens (screenshots), not inferred from source; contains both verdicts (spec compliance AND visual quality)."
13
+ accept:
14
+ when: "never — findings route back to implement; the human reviews at the end batch."
15
+ timing: deferred
16
+ ---
17
+
18
+ # Design Review
19
+
20
+ Review a built UI with a senior designer's eye. The visual counterpart of
21
+ `review-code`: two verdicts, in order — does it match the spec, then is it
22
+ world-class.
23
+
24
+ **Core principle:** You cannot review design from source. Render it and look at
25
+ the pixels. A claim about how it looks, without a screenshot, is a guess — the
26
+ visual equivalent of claiming tests pass without running them.
27
+
28
+ ## Inputs
29
+
30
+ - `built_ui` — the running app (url / dev server / screenshots of each screen).
31
+ - `ui_spec` — `specs/<slug>-ui.md` it must satisfy.
32
+ - Read `taste/design-system` + `taste/brand` — the bar to calibrate against.
33
+ Deviations from the system are higher severity, not lower.
34
+
35
+ ## Look at the real thing first
36
+
37
+ Render every screen and state in the spec (loading, empty, error too). Capture
38
+ screenshots. Review those, not the CSS.
39
+
40
+ ## Verdict 1 — Spec compliance
41
+
42
+ For each screen/flow/state in `ui_spec`: present and correct, missing, or wrong.
43
+ Missing a screen or a non-happy state → spec verdict FAIL.
44
+
45
+ ## Verdict 2 — Visual quality
46
+
47
+ Against the design system and world-class craft:
48
+
49
+ - **Hierarchy** obvious in one glance? **Spacing** on the system's scale?
50
+ - **Consistency** with the system's type/color/tokens? Drift = defect.
51
+ - Is the **memorable-thing** actually visible here?
52
+ - **Non-happy states** real, not stubs (loading/empty/error)?
53
+ - **Interaction quality** — jank, slow transitions, layout shift?
54
+
55
+ ### Anti-slop check
56
+
57
+ Flag any AI-default tell: Inter/Roboto where the system says otherwise ·
58
+ purple-blue gradient heroes · three-column rounded-card grids · default Tailwind
59
+ swatches · drop shadows on everything · emoji as icons · generic everything.
60
+
61
+ Rate each finding **Critical** (must fix) · **Important** (fix before merge) ·
62
+ **Minor** (note it).
63
+
64
+ ## Output: `design_review_report`
65
+
66
+ ```yaml
67
+ spec_compliance: pass # pass | fail
68
+ missing: [<screen/state not built>]
69
+ findings:
70
+ - { severity: Important, screen: settings, issue: "...", fix: "...", shot: "..." }
71
+ verdict: changes_requested # approved | changes_requested
72
+ ```
73
+
74
+ ## Rules
75
+
76
+ - **Evidence-based.** Every finding names the screen and, where possible, a
77
+ screenshot. No "looks off" without showing it.
78
+ - **Don't pre-judge.** Surface deviations; don't excuse one because the spec or a
79
+ deadline pushed it.
80
+ - **Findings route back, not to the human.** Critical/Important go to `implement`
81
+ (re-run with this report as `qa_feedback`). The human sees the result at the
82
+ end-of-run acceptance.
83
+ - If it's clean and on-system, say so plainly and approve.
@@ -0,0 +1,81 @@
1
+ ---
2
+ name: design-system
3
+ description: Use when a project has no design direction yet, or must (re)establish its aesthetic — produces the durable design system (aesthetic POV, type, color, space, motion) before any UI is designed.
4
+ license: MIT
5
+ allowed-tools: [Read, Write, WebSearch, Grep, Glob]
6
+ metadata:
7
+ contract:
8
+ inputs: [product_context, references?]
9
+ reads: [taste/brand, taste/design-system]
10
+ outputs: [taste/design-system, taste/brand]
11
+ authority: "Author the durable design KB (taste/design-system, taste/brand). High-authority, audited (knowledge write). No source code, no production."
12
+ verify: "Specific, not generic: a named typeface, real type/space scales, named reference products, one memorable-thing. Covers type + color + space + motion. No AI-default tells (see anti-slop)."
13
+ accept:
14
+ when: "Always — the aesthetic direction is foundational and brand-defining."
15
+ timing: inline
16
+ ---
17
+
18
+ # Design System
19
+
20
+ Establish the project's durable visual direction — once — so every UI after it
21
+ is consistent and unmistakably this product's. This is the source of taste the
22
+ `design-ui` skill applies.
23
+
24
+ **Posture:** You are a senior product designer with strong opinions about
25
+ typography, color, space, and motion. You research, then propose ONE coherent
26
+ system and explain why. Opinionated, not dogmatic. Zero tolerance for generic,
27
+ AI-generated-looking interfaces.
28
+
29
+ ## The forcing question (do this first)
30
+
31
+ Ask: **"What is the one thing someone should remember after seeing this product
32
+ for the first time?"** One sentence — a feeling, a claim, a posture. Every
33
+ decision below serves it. A system that tries to be memorable for everything is
34
+ memorable for nothing.
35
+
36
+ ## Commit to a reference (this is what beats slop)
37
+
38
+ AI defaults to the on-distribution average. Beat it by committing to a specific
39
+ point of view BEFORE specifying anything:
40
+
41
+ 1. **Research the space.** What do the 2–3 best products here actually look like?
42
+ 2. **Name 2–3 concrete references** to steal direction from (e.g. Linear,
43
+ Things 3, Stripe, Vercel, Bloomberg terminal, Notion). Not to copy — to anchor.
44
+ 3. **State the one rule that makes this distinctive** (the type personality, a
45
+ signature color, a density choice, a motion restraint).
46
+
47
+ ## Specify the system (specifics, not adjectives)
48
+
49
+ - **Typography** — a named typeface (not Inter/Roboto unless deliberate and
50
+ justified), a type scale with real sizes/weights, line-height rules.
51
+ - **Color** — a real palette with roles (bg, surface, text, accent, states), not
52
+ default framework swatches; state the contrast floor.
53
+ - **Space** — a spacing scale; density posture (tight/airy) tied to the product.
54
+ - **Layout** — grid and composition principles; how hierarchy is created.
55
+ - **Motion** — timing, easing, and where motion is used (and where it is not).
56
+
57
+ ## Anti-slop (forbidden defaults — name and avoid)
58
+
59
+ Inter/Roboto by default · purple-blue gradient heroes · three-column
60
+ rounded-card feature grids · drop shadows on everything · default Tailwind
61
+ palette (blue-500…) · emoji as product icons · centered everything · gradients /
62
+ glassmorphism with no reason. If a choice is one of these, it must be a
63
+ deliberate, justified decision — not a default.
64
+
65
+ ## Output: the durable KB (structured, with provenance)
66
+
67
+ Write `taste/design-system` and `taste/brand` as structured entries (per the
68
+ knowledge format: terse, chunked, each with `source`/`added`/`approved_by`).
69
+ Record the memorable-thing, the references, the one distinctive rule, and each
70
+ specified token/scale. This is the source `design-ui` reads.
71
+
72
+ ## Self-critique before done
73
+
74
+ Look at the system with a designer's eye: does it read as a specific, named
75
+ point of view, or as a generic template? Could you tell it apart from a default
76
+ AI UI? If not, sharpen it.
77
+
78
+ ## Done
79
+
80
+ Write the KB, then stop for approval (`accept: inline`). On approval, `design-ui`
81
+ applies this system per feature. Re-run only to evolve the direction.
@@ -0,0 +1,96 @@
1
+ ---
2
+ name: design-ui
3
+ description: Use when a feature has a user interface, to design its screens and flows by applying the project's design system with world-class craft, before stories are drafted.
4
+ license: MIT
5
+ allowed-tools: [Read, Write, Grep, Glob]
6
+ metadata:
7
+ contract:
8
+ inputs: [requirement, ui_context]
9
+ reads: [taste/design-system, taste/brand]
10
+ outputs: [specs/<slug>-ui.md]
11
+ updates: [taste/design-system?, taste/brand?]
12
+ authority: "Write to the specs namespace (default docs/specs/) and design assets. No source code, no production."
13
+ verify: "Every screen and flow maps to a requirement; expresses the design system (not generic defaults); passes the designer's-eye self-critique."
14
+ accept:
15
+ when: "Visual direction — the look is foundational; everything downstream builds on it."
16
+ timing: inline
17
+ ---
18
+
19
+ # Design UI
20
+
21
+ Design a feature's UI by APPLYING the project's design system — not inventing a
22
+ one-off look. Consistency is the asset; the system is where world-class comes
23
+ from. This skill expresses it for one feature.
24
+
25
+ **Posture:** Senior product designer. Strong opinions on type, color, space,
26
+ motion. Zero tolerance for generic, AI-generated-looking screens.
27
+
28
+ ## Precondition
29
+
30
+ Read `taste/design-system` + `taste/brand`. **If the design system is empty,
31
+ stop and route to `design-system` first.** Do not invent a per-feature
32
+ aesthetic — that is exactly how product consistency dies.
33
+
34
+ Carry the system's **memorable-thing** and **distinctive rule** through every
35
+ screen. If this feature can't express them, say so.
36
+
37
+ ## Process
38
+
39
+ 1. **Map screens to requirements.** Every screen/state must trace to a
40
+ requirement. Cut the rest (YAGNI).
41
+ 2. **Apply the system, don't restate it.** Use its typeface, scale, palette,
42
+ spacing, motion. Reuse existing components/tokens before proposing new ones.
43
+ 3. **Specify each screen:** purpose, layout and hierarchy, the system tokens
44
+ used, and the non-happy states — loading, empty, error. These are where UIs
45
+ actually fail.
46
+ 4. **Show, don't just tell.** When a layout choice is clearer shown than
47
+ described, produce a mockup/wireframe, not prose.
48
+
49
+ ## Anti-slop (forbidden defaults)
50
+
51
+ No Inter/Roboto unless the system says so · no purple-blue gradient heroes · no
52
+ three-column rounded-card grids by reflex · no default Tailwind swatches · no
53
+ drop shadows on everything · no emoji as icons. A default is only allowed as a
54
+ deliberate, justified choice.
55
+
56
+ ## Designer's-eye self-critique (mandatory gate before done)
57
+
58
+ Look at the result and ask:
59
+
60
+ - Does this look like it could ship from {the named references}, or like a
61
+ generic AI UI? If the latter, fix it.
62
+ - Is hierarchy obvious in one glance? Is spacing on the scale? Is the
63
+ memorable-thing visible here?
64
+ - Did any anti-slop tell sneak in?
65
+
66
+ Fix until it passes. This is the visual equivalent of `run-tests` — don't claim
67
+ done without running it.
68
+
69
+ ## Output: `specs/<slug>-ui.md`
70
+
71
+ ```markdown
72
+ # <Feature> — UI Spec
73
+
74
+ ## Screens — each: purpose, the requirement it serves, layout + hierarchy.
75
+
76
+ ## Flows — how the user moves between screens.
77
+
78
+ ## States — loading / empty / error for each screen.
79
+
80
+ ## System use — tokens/components used; how the memorable-thing shows up here.
81
+
82
+ ## New patterns — anything the system lacked, with rationale (candidate for KB).
83
+ ```
84
+
85
+ `draft-story`'s `UI Reference` points to this file.
86
+
87
+ ## Metabolism
88
+
89
+ A genuinely new, reusable design decision (not feature-specific) folds back into
90
+ `taste/design-system` / `taste/brand` via `updates:` — append with provenance,
91
+ supersede rather than rewrite. Feature-only details stay in the spec.
92
+
93
+ ## Done
94
+
95
+ Write the UI spec, pass the self-critique, then stop for visual approval
96
+ (`accept: inline`). On approval the orchestrator wires `draft-story`.
@@ -0,0 +1,106 @@
1
+ ---
2
+ name: draft-story
3
+ description: Use when a feature request or requirement must become an implementable spec with acceptance criteria, before any code is written.
4
+ license: MIT
5
+ allowed-tools: [Read, Write, Grep, Glob]
6
+ metadata:
7
+ contract:
8
+ inputs: [requirement, context]
9
+ reads: [taste/coding-standards, registry/api, registry/db, front-end-spec?]
10
+ outputs: [docs/stories/<slug>.md]
11
+ authority: "Write one flat story file at docs/stories/<slug>.md. No folders. No source code. No production. No spend."
12
+ verify: "Every requirement maps to at least one acceptance criterion; constraints are copied verbatim; no placeholders (no TBD/TODO/'handle edge cases')."
13
+ accept:
14
+ when: "Always — this output sets the direction the whole build rests on."
15
+ timing: inline
16
+ ---
17
+
18
+ # Draft Story
19
+
20
+ Turn a requirement into one implementable story. This is the upfront direction
21
+ gate: cheap to get right here, expensive to discover wrong after a build.
22
+
23
+ **Core principle:** A story is done when an engineer with no prior context could
24
+ implement it without guessing.
25
+
26
+ ## Output
27
+
28
+ Write ONE flat Markdown file: `docs/stories/<slug>.md` — `<slug>` is a kebab
29
+ handle from the title. No folders, no `epic.story` numbering. Produce exactly
30
+ these sections (with frontmatter) and nothing more.
31
+
32
+ ```markdown
33
+ ---
34
+ origin: <stable short handle of the requirement this story came from>
35
+ ---
36
+
37
+ # <Story title>
38
+
39
+ ## Goal
40
+
41
+ One sentence: what this delivers and for whom.
42
+
43
+ ## Constraints
44
+
45
+ Hard rules this story must respect, one per line, copied verbatim — no
46
+ paraphrase (version floors, allowed/forbidden dependencies, naming and copy
47
+ rules, platform requirements). Every section below implicitly includes these.
48
+
49
+ ## Acceptance Criteria
50
+
51
+ - AC1: <observable, testable condition>
52
+ - AC2: ...
53
+ Every AC must be checkable by a test or a human looking at a result.
54
+
55
+ ## File Map
56
+
57
+ - Create: <exact/path>
58
+ - Modify: <exact/path>
59
+ - Test: <exact/path>
60
+
61
+ ## Interfaces
62
+
63
+ - Consumes: <signatures this story relies on from existing code>
64
+ - Produces: <signatures later work will rely on — exact names and types>
65
+
66
+ ## UI Reference (only if the story touches UI)
67
+
68
+ Link to the front-end spec / design and name the exact screens or components in
69
+ scope. Omit this section entirely for non-UI stories.
70
+
71
+ ## Out of Scope
72
+
73
+ What this story deliberately does NOT do.
74
+ ```
75
+
76
+ ## Rules
77
+
78
+ - **One story, one coherent deliverable.** If it spans independent subsystems,
79
+ split into separate stories — each its own `docs/stories/<slug>.md`, all
80
+ sharing the same `origin` so the set is queryable as one group.
81
+ - **Flat, no hierarchy.** One file per story under `docs/stories/`. Grouping is
82
+ the `origin` field (a query the AI runs), never a folder. Order comes from
83
+ Interfaces (dependencies), never from a number.
84
+ - **No placeholders.** "Add validation", "handle errors", "TBD" are failures.
85
+ State the actual condition.
86
+ - **Acceptance criteria are observable.** "Works well" is not an AC. "Returns
87
+ 400 with `{error:'Email required'}` for empty email" is.
88
+ - **Stay at spec altitude.** Describe what must be true, not how to code it.
89
+ Implementation is the `implement` skill's job.
90
+ - **Constraints are verbatim.** Copy each hard rule exactly from its source — a
91
+ paraphrased limit is a changed limit.
92
+ - **UI Reference only when there is UI.** Omit the section for non-UI stories;
93
+ never leave it as an empty placeholder.
94
+
95
+ ## Self-review before finishing
96
+
97
+ 1. Does every requirement map to an AC? List any gap, then close it.
98
+ 2. Are all hard constraints copied verbatim, not paraphrased?
99
+ 3. Any placeholder text? Replace with the real condition.
100
+ 4. Do the names in Interfaces match across sections?
101
+
102
+ ## Done
103
+
104
+ Write `docs/stories/<slug>.md`. Hand off its path for direction confirmation
105
+ (this skill's `accept` is `inline`): the human approves the direction, or sends
106
+ it back, before `implement` begins.
@@ -0,0 +1,78 @@
1
+ ---
2
+ name: implement
3
+ description: Use when implementing a feature or bugfix from a spec with acceptance criteria, before writing implementation code.
4
+ license: MIT
5
+ allowed-tools: [Read, Write, Edit, Bash]
6
+ metadata:
7
+ contract:
8
+ inputs: [story, acceptance_criteria, scope, qa_feedback?]
9
+ reads: [taste/coding-standards, registry/api, registry/db]
10
+ outputs: [code_diff, ac_traceability, test_files]
11
+ authority: "Write src/ and tests/. No production, no deploy, no network spend."
12
+ verify: "run-tests is green AND every acceptance criterion has evidence (file:line + test)."
13
+ accept:
14
+ when: "scope is high-risk"
15
+ timing: deferred
16
+ ---
17
+
18
+ # Implement (Test-Driven)
19
+
20
+ Write the test first. Watch it fail. Write the minimum code to pass.
21
+
22
+ **Core principle:** If you did not watch the test fail, you do not know the test
23
+ tests the right thing.
24
+
25
+ > Rework note: when `qa_feedback` is present, you are re-running this same skill
26
+ > on prior output. Read the feedback, add or fix the failing test that proves
27
+ > it, then continue the cycle. Do not start a separate "fix" process.
28
+
29
+ ## The Iron Law
30
+
31
+ ```
32
+ NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
33
+ ```
34
+
35
+ Wrote code before its test? Delete it. Implement again from the test. "Keep it
36
+ as reference" is testing-after with extra steps.
37
+
38
+ ## RED → GREEN → REFACTOR (one acceptance criterion at a time)
39
+
40
+ 1. **RED** — Write one test for one behavior. Clear name. Real code, not mocks.
41
+ 2. **Verify RED** — Run it. Confirm it fails, and fails because the feature is
42
+ missing (not a typo). A test that passes now tests existing behavior — fix it.
43
+ 3. **GREEN** — Write the simplest code that passes. No extra options, no
44
+ abstraction the test does not demand (YAGNI).
45
+ 4. **Verify GREEN** — Run it. The test passes, other tests still pass, output is
46
+ clean. Failing? Fix the code, not the test.
47
+ 5. **REFACTOR** — Remove duplication, improve names. Stay green. Add no behavior.
48
+ 6. **Repeat** for the next acceptance criterion.
49
+
50
+ ## Scope
51
+
52
+ - `scope=small` (bugfix, ≤3 files): same cycle, narrow it to the changed behavior.
53
+ - `scope=high-risk` (security, data, money, irreversible): same cycle; this
54
+ skill's `accept` triggers a human sign-off on the result.
55
+
56
+ ## AC traceability (required output)
57
+
58
+ For every acceptance criterion, record evidence — the orchestrator and
59
+ `run-tests` consume this:
60
+
61
+ ```
62
+ AC1 -> code: src/auth/login.ts:42-58 | test: tests/auth/login.test.ts:'rejects empty email'
63
+ ```
64
+
65
+ No evidence = the criterion is not done. Placeholders (`TODO`, empty paths) are
66
+ not evidence.
67
+
68
+ ## Red flags — stop and restart the cycle
69
+
70
+ - Code written before its test
71
+ - A test that passed the first time you ran it
72
+ - You cannot explain why the test failed
73
+ - "I will add tests after" / "too simple to test" / "just this once"
74
+
75
+ ## Done
76
+
77
+ `run-tests` is green, every AC has evidence. Output `code_diff`,
78
+ `ac_traceability`, and `test_files`.
@@ -0,0 +1,94 @@
1
+ ---
2
+ name: orchestrate
3
+ description: Use when a goal must be delivered end-to-end by composing skills, with the human approving direction at the start and the result at the end.
4
+ license: MIT
5
+ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Task]
6
+ metadata:
7
+ contract:
8
+ inputs: [intent, constraints?]
9
+ reads: [skill-registry, taste/*]
10
+ outputs: [accepted_deliverable, run_ledger]
11
+ authority: "Dispatch leaf skills, each within its own authority. Do not directly touch source, production, or spend — leaf skills do that, gated. Enforce every accept gate."
12
+ verify: "Every dispatched skill's verify passed; final review is clean; all inline accepts were obtained."
13
+ accept:
14
+ when: "The final deliverable — once, batched."
15
+ timing: inline
16
+ ---
17
+
18
+ # Orchestrate
19
+
20
+ The root skill. The human binds intent here; this skill composes leaf skills to
21
+ fulfill it. It holds the only warm context. Leaf skills run as fresh, isolated
22
+ dispatches and keep none.
23
+
24
+ **Core principle:** Organize by capability, not by role. The human sets
25
+ direction at the start and accepts the result at the end. In between, the run is
26
+ lights-out: objective `verify` gates each step, not a human.
27
+
28
+ **This skill is the designated root.** It does not orchestrate itself. There is
29
+ no step above intent.
30
+
31
+ ## The loop
32
+
33
+ 1. **Bind intent.** Read the human's goal and constraints. This is the only
34
+ place intent enters.
35
+ 2. **Select.** Read the skill registry. Pick skills by their `description`
36
+ (when-to-use). Load a skill's full `contract` only when it is a candidate —
37
+ never load every contract at once.
38
+ 3. **Wire (emergent, not hardcoded).** Build the path by matching one skill's
39
+ `outputs` to the next skill's `inputs`. Skills do not know each other; only
40
+ you do. Do not assume a fixed pipeline — wire what this intent needs.
41
+ 4. **Dispatch one step.** Hand the skill exactly the `inputs` it declares, as
42
+ files. Run it as a fresh subagent for isolation. Choose the cheapest model
43
+ that can do the step.
44
+ 5. **Verify (gate).** Run the skill's `verify`. If it fails, re-dispatch the
45
+ **same** skill with the failure as feedback (see Rework). If it passes,
46
+ continue.
47
+ 6. **Accept (gate).** Apply the rule below. Then continue — do not pause to ask
48
+ "should I keep going?" mid-run.
49
+ 7. **Repeat** 3–6 until the intent is fulfilled.
50
+ 8. **Final acceptance.** Present the batched deferred accepts and a final review
51
+ to the human, once. Apply corrections (see Metabolism), then deliver.
52
+
53
+ ## Accept gate
54
+
55
+ | Skill's `accept.timing` | Skill's `authority` | Action |
56
+ | ----------------------- | ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
57
+ | `inline` | any | Stop now. Get human sign-off before continuing. |
58
+ | `deferred` | reversible / low blast | Record it for the final acceptance batch. |
59
+ | `deferred` | **irreversible / high blast** (spend, send, deploy, delete, sign) | **Override to inline.** Stop and get sign-off now. A deferred review cannot un-send an email. |
60
+ | `never` | any | No human. Continue. |
61
+
62
+ You are the teeth. The fields are only data; you enforce them.
63
+
64
+ ## Rework is a loop, not a skill
65
+
66
+ A failed `verify` or a `changes_requested` review is not a separate "fix" step.
67
+ Re-dispatch the same skill with the feedback as an input (e.g. `qa_feedback`).
68
+ Same capability, new input.
69
+
70
+ ## Metabolism
71
+
72
+ When the human corrects something at final acceptance ("not on-brand", "wrong
73
+ tone"), write the correction back into the relevant `taste/*` knowledge base, so
74
+ the next run reads the improved taste. The run teaches the organization.
75
+
76
+ ## Context discipline (stay lean)
77
+
78
+ - **Files, not paste.** Move artifacts between steps as files. Never paste a
79
+ step's full output into your context — it would be re-read every later turn.
80
+ - **Ledger.** Append each finished step to a progress ledger file
81
+ (`.orchestrate/ledger.md`). After a compaction, trust the ledger and `git
82
+ log`, not memory. A step recorded done is done — do not re-dispatch it.
83
+ - **Cheapest model per step.** Mechanical step → cheap model. Judgment step →
84
+ capable model. State the model explicitly on every dispatch.
85
+ - **Keep your own context small.** You coordinate; the leaves do the heavy work.
86
+
87
+ ## Red flags — stop
88
+
89
+ - Pausing to ask the human mid-run when nothing is `inline` or irreversible
90
+ - Running an irreversible-authority skill on a `deferred` accept
91
+ - Hardcoding a fixed skill order instead of wiring outputs→inputs
92
+ - Pasting a step's full output into your context instead of handing a file
93
+ - Re-dispatching a step the ledger already marks done
94
+ - Marking the run complete without every step's `verify` evidence
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: research
3
+ description: Use when a planning or design decision needs external facts — market, competitor, feasibility, or a library/tech choice — before committing.
4
+ license: MIT
5
+ allowed-tools: [Read, WebSearch, WebFetch]
6
+ metadata:
7
+ contract:
8
+ inputs: [question, scope]
9
+ reads: []
10
+ outputs: [research/<slug>.md]
11
+ authority: "Read-only, plus external/web reads. No code, no production, no spend."
12
+ verify: "Every claim carries a source; the recommendation follows from the findings, not from prior belief."
13
+ accept:
14
+ when: "never — informational; it feeds a decision, it does not make one."
15
+ timing: deferred
16
+ ---
17
+
18
+ # Research
19
+
20
+ Answer one decision-relevant question with sourced facts, so a downstream
21
+ decision rests on evidence instead of assumption.
22
+
23
+ **Core principle:** Evidence before recommendation. A claim without a source is
24
+ an opinion — label it as one or drop it.
25
+
26
+ ## Process
27
+
28
+ 1. **Sharpen the question.** State exactly what decision this informs and what
29
+ would change the answer. If the question is vague, narrow it first.
30
+ 2. **Gather from several independent sources.** One source is a lead, not a fact.
31
+ 3. **Verify each claim.** Cross-check; keep the source for every claim. Note
32
+ where sources disagree.
33
+ 4. **Recommend.** Give the answer the findings support, with the trade-offs. If
34
+ the evidence is thin, say so — "insufficient evidence" is a valid result.
35
+
36
+ ## Output: `research/<slug>.md`
37
+
38
+ ```markdown
39
+ # <Question>
40
+
41
+ ## Answer — the recommendation in one or two lines.
42
+
43
+ ## Findings
44
+
45
+ - <claim> — source: <url/ref> — confidence: high/med/low
46
+
47
+ ## Disagreements / gaps — where sources conflict or evidence is thin.
48
+
49
+ ## So what — how this changes the downstream decision.
50
+ ```
51
+
52
+ ## Rules
53
+
54
+ - **No unsourced claims.** Each finding names its source.
55
+ - **Recommendation must follow from findings**, not from what you assumed going
56
+ in. If findings contradict the assumption, say that.
57
+ - **Stay scoped.** Answer the question asked; don't expand into a survey.
58
+
59
+ ## Done
60
+
61
+ Write the brief. It feeds back to `brainstorm` / `design-*` (no human gate —
62
+ `accept: never`). Durable facts it surfaces (e.g. a chosen library) become an
63
+ architecture decision via `design-architecture`, not a direct write to knowledge.