create-religion 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.
Files changed (80) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +47 -0
  3. package/dist/bin/religion.js +209 -0
  4. package/dist/lib/dashboard.js +123 -0
  5. package/dist/lib/doctor.js +164 -0
  6. package/dist/lib/install.js +170 -0
  7. package/dist/lib/paths.js +40 -0
  8. package/dist/lib/state.js +117 -0
  9. package/dist/lib/status.js +88 -0
  10. package/package.json +40 -0
  11. package/template/.agents/skills/audit/SKILL.md +169 -0
  12. package/template/.agents/skills/auto/SKILL.md +110 -0
  13. package/template/.agents/skills/browser-tests/SKILL.md +65 -0
  14. package/template/.agents/skills/check/SKILL.md +86 -0
  15. package/template/.agents/skills/ci/SKILL.md +79 -0
  16. package/template/.agents/skills/complete/SKILL.md +184 -0
  17. package/template/.agents/skills/debug/SKILL.md +72 -0
  18. package/template/.agents/skills/discovery/SKILL.md +83 -0
  19. package/template/.agents/skills/distill/SKILL.md +95 -0
  20. package/template/.agents/skills/doctor/SKILL.md +65 -0
  21. package/template/.agents/skills/extend/SKILL.md +102 -0
  22. package/template/.agents/skills/feature/SKILL.md +172 -0
  23. package/template/.agents/skills/feature/reference/spec-template.md +67 -0
  24. package/template/.agents/skills/fix/SKILL.md +76 -0
  25. package/template/.agents/skills/implement/SKILL.md +174 -0
  26. package/template/.agents/skills/overview/SKILL.md +150 -0
  27. package/template/.agents/skills/overview/reference/project-overview-template.md +101 -0
  28. package/template/.agents/skills/prototype/SKILL.md +90 -0
  29. package/template/.agents/skills/release/SKILL.md +88 -0
  30. package/template/.agents/skills/rollback/SKILL.md +114 -0
  31. package/template/.agents/skills/setup/SKILL.md +105 -0
  32. package/template/.agents/skills/status/SKILL.md +63 -0
  33. package/template/.agents/skills/tests/SKILL.md +90 -0
  34. package/template/.agents/skills/try/SKILL.md +59 -0
  35. package/template/.claude/hooks/guard-rendered-output.mjs +49 -0
  36. package/template/.claude/hooks/guard-tier-one.mjs +63 -0
  37. package/template/.claude/hooks/write-handoff.mjs +83 -0
  38. package/template/.claude/skills/audit/SKILL.md +169 -0
  39. package/template/.claude/skills/auto/SKILL.md +110 -0
  40. package/template/.claude/skills/browser-tests/SKILL.md +65 -0
  41. package/template/.claude/skills/check/SKILL.md +86 -0
  42. package/template/.claude/skills/ci/SKILL.md +79 -0
  43. package/template/.claude/skills/complete/SKILL.md +184 -0
  44. package/template/.claude/skills/debug/SKILL.md +72 -0
  45. package/template/.claude/skills/discovery/SKILL.md +83 -0
  46. package/template/.claude/skills/distill/SKILL.md +95 -0
  47. package/template/.claude/skills/doctor/SKILL.md +65 -0
  48. package/template/.claude/skills/extend/SKILL.md +102 -0
  49. package/template/.claude/skills/feature/SKILL.md +172 -0
  50. package/template/.claude/skills/feature/reference/spec-template.md +67 -0
  51. package/template/.claude/skills/fix/SKILL.md +76 -0
  52. package/template/.claude/skills/implement/SKILL.md +174 -0
  53. package/template/.claude/skills/overview/SKILL.md +150 -0
  54. package/template/.claude/skills/overview/reference/project-overview-template.md +101 -0
  55. package/template/.claude/skills/prototype/SKILL.md +90 -0
  56. package/template/.claude/skills/release/SKILL.md +88 -0
  57. package/template/.claude/skills/rollback/SKILL.md +114 -0
  58. package/template/.claude/skills/setup/SKILL.md +105 -0
  59. package/template/.claude/skills/status/SKILL.md +63 -0
  60. package/template/.claude/skills/tests/SKILL.md +90 -0
  61. package/template/.claude/skills/try/SKILL.md +59 -0
  62. package/template/AGENTS.md +206 -0
  63. package/template/CLAUDE.md +175 -0
  64. package/template/religion/.state/README.md +10 -0
  65. package/template/religion/.state/settings-template.json +19 -0
  66. package/template/religion/build-plan.md +43 -0
  67. package/template/religion/config.json +26 -0
  68. package/template/religion/context/ai-interaction.md +84 -0
  69. package/template/religion/context/coding-standards.md +77 -0
  70. package/template/religion/context/current-work.md +8 -0
  71. package/template/religion/context/findings.md +9 -0
  72. package/template/religion/context/handoff.md +8 -0
  73. package/template/religion/context/project-overview.md +8 -0
  74. package/template/religion/history/features/README.md +8 -0
  75. package/template/religion/history/fixes/README.md +6 -0
  76. package/template/religion/history/rollbacks/README.md +7 -0
  77. package/template/religion/learning/journal.md +7 -0
  78. package/template/religion/learning/lessons.md +8 -0
  79. package/template/religion/project-plan.md +49 -0
  80. package/template/religion/reference/README.md +7 -0
@@ -0,0 +1,172 @@
1
+ ---
2
+ name: feature
3
+ summary: turn a build-plan item into a reviewed, buildable spec
4
+ description: "Turn a feature from the build plan into a buildable spec in religion/context/current-work.md. With no argument it specs the first unchecked item; given a number or name it specs that one; add `preview` to get a read-only briefing that writes nothing. A genuinely new feature goes through an intake that proposes the plan line, waits for approval, and refreshes the overview before spec'ing. Sizes the work and splits anything too large into sub-items, writes small build steps with observable outcomes, then red-teams its own draft and reports what the critique changed before stopping for review. Use when the user runs /feature, names or numbers a feature, asks to start or break down the next feature, or asks what an upcoming feature involves."
5
+ ---
6
+
7
+ # feature - turn a build-plan item into a buildable spec
8
+
9
+ Where this sits:
10
+
11
+ build-plan.md -> [feature] -> current-work.md -> implement
12
+ (one line) (spec it) (the spec) (build it)
13
+
14
+ The build plan is deliberately thin: one line per item, no detail. Turning one of those
15
+ lines into something buildable is this skill's whole job. It plans; it never builds.
16
+
17
+ ## Input
18
+
19
+ - **No argument** - the first unchecked item in the build plan, including the first
20
+ unchecked sub-item under an item that was split.
21
+ - **A number or name** - `/feature 3`, `/feature "login"`.
22
+ - **A description with no match in the plan** - goes through **New work intake** below.
23
+ - **`preview`** appended to any of the above - a read-only briefing, writing nothing.
24
+
25
+ ## Step 0 - make sure the ground is solid
26
+
27
+ Two checks before anything else.
28
+
29
+ **Overview freshness.** Recompute the source hash over the two plans. If it does not match
30
+ the stamp in `religion/context/project-overview.md`, or the stamp is missing, follow the
31
+ `/overview` skill first, report what changed, then continue here. A spec written
32
+ against a stale overview encodes a data model the plans no longer describe.
33
+
34
+ **Open questions.** Read the overview's Open questions section. If any of them lists an
35
+ area this item touches in its `affects` line, the contradiction would be resolved by
36
+ guessing while writing the spec. Instead:
37
+
38
+ 1. Name the question and quote what the two plans each say.
39
+ 2. Ask the user to decide.
40
+ 3. Show the exact edit their answer implies, in the plan section that is wrong.
41
+ 4. On approval, write it, follow `/overview` to regenerate, then continue.
42
+
43
+ Only the user's own answer may resolve an open question, and only the edit they approved
44
+ is written. If they would rather not decide now, stop and say which item remains blocked.
45
+
46
+ An open question whose `affects` list does not cover this item does not block it.
47
+
48
+ ## Step 1 - pick the target
49
+
50
+ Given a number or name that matches a build-plan item, use it. With no argument, read the
51
+ plan top to bottom and take the first unchecked leaf. State which item you are spec'ing
52
+ before going further.
53
+
54
+ If the build plan is not a checklist yet, treat every item as unchecked, take the first,
55
+ and offer to convert the list so progress can be tracked from here on. Proceed either way.
56
+
57
+ ### New work intake
58
+
59
+ For a genuinely new capability, not a bug or small change. Those go to /fix.
60
+
61
+ 1. Search checked and unchecked items for an existing or near-duplicate item. If the
62
+ wording might just be a different name for something already planned, show the closest
63
+ matches instead of creating new scope.
64
+ 2. If it is genuinely new, propose one feature-sized checkbox line and where it belongs.
65
+ Preserve completed items and their numbers; take the next unused number.
66
+ 3. Check whether it materially changes product direction, users, data, stack, or
67
+ deployment. Include the exact proposed project-plan edits only when it does. Most
68
+ incremental work changes only the build plan.
69
+ 4. Stop for approval, showing the complete proposed plan change.
70
+ 5. After approval, write it, follow `/overview` to regenerate, then resume here with
71
+ the new item as the target.
72
+
73
+ Never add scope to a plan the user owns without showing the exact change and waiting.
74
+
75
+ ## Step 2 - size it, and split if it is too big
76
+
77
+ Read the target line, then take full context from the project overview: the data model,
78
+ the stack, the conventions. Then decide how big this is.
79
+
80
+ **Small enough to build and review as one unit** goes to Step 3.
81
+
82
+ **Too big for one reviewable spec** gets split. Propose a short list of sub-items, title
83
+ and one line each, let the user adjust it, then write them under the parent as an indented
84
+ checklist (`4a`, `4b`, `4c`). Spec only the first now; the rest are picked up later.
85
+
86
+ Two levels of breakdown, easily confused:
87
+
88
+ - **Sub-items** are each big enough to stand alone: their own spec, review, and archive.
89
+ - **Build steps** are small diffs inside one item.
90
+
91
+ "Authentication" is too big for one spec, so it becomes `4a` registration, `4b` login,
92
+ `4c` route protection. Inside `4a`, the page and its server action are steps, not items.
93
+
94
+ This sizing call is exactly why the build plan stays high level.
95
+
96
+ ### Preview mode
97
+
98
+ When the request ended in `preview`, stop here and report, writing nothing:
99
+
100
+ - what the item is, in a sentence
101
+ - what it depends on, and whether those are done
102
+ - what it will touch: routes, models, modules
103
+ - rough size, and how many steps it is likely to need
104
+ - whether it will split, and into what
105
+ - anything worth deciding before spec'ing it
106
+
107
+ That is the whole of preview mode. Do not write the spec, touch the plans, or create files.
108
+
109
+ ## Step 3 - write the spec
110
+
111
+ Write `religion/context/current-work.md` following `reference/spec-template.md`, filling
112
+ every section.
113
+
114
+ **Design reference.** If `prototypes/` exists, it is the reference and no image is needed.
115
+ Check what is in it:
116
+
117
+ - **Static mockups sharing a theme file** are throwaway. Link the relevant ones, treat the
118
+ theme as the source of truth for colour, type, and spacing, and make the **first build
119
+ step** port those tokens into the application's real stylesheet before any component is
120
+ built against them.
121
+ - **Real components** are not throwaway. Link them and build on them directly. There is no
122
+ token-porting step, because the tokens are already the project's.
123
+
124
+ If there are no prototypes and the work is visual or a replication of an existing design,
125
+ ask for a screenshot, save it under `religion/reference/`, and link it. Do not write a
126
+ visual spec from words alone when an image could exist.
127
+
128
+ **Build steps** are the core of the file. Each is a small diff, ends with something that
129
+ works, depends only on earlier steps, and carries an outcome that can actually be observed.
130
+ Read the Commands section of the entry file while writing the Testing section, so predicted
131
+ coverage matches the gate that is actually on.
132
+
133
+ This is a draft. Do not present it yet.
134
+
135
+ ## Step 4 - red-team the draft, then tighten
136
+
137
+ Turn on your own spec and try to break it. The cheapest place to catch a scope problem or
138
+ an oversized step is here, before any code exists.
139
+
140
+ - **Coverage.** What does this need that no step delivers? Push on what the happy path
141
+ skipped: empty, missing, or malformed input; the error, loading, and empty states; the
142
+ first-run case; failure of anything external it calls.
143
+ - **Step size.** Would any step's diff be too large to read in one sitting? Split it.
144
+ Oversized steps defeat the review gate, which is the point of the whole loop.
145
+ - **Order.** Does each step leave the project working, and depend only on earlier ones?
146
+ - **Contracts.** Is any type, route, or stored shape that later work will touch left
147
+ undefined? Lock it now and mark it load-bearing.
148
+ - **Scope honesty.** Is anything creeping in that belongs to a later item? Is anything
149
+ pushed out of scope that this item genuinely cannot ship without?
150
+ - **Outcomes.** Is each one observable and checkable, or is it a vague "it works"?
151
+ - **Visual fidelity.** If this is visual work, is a reference linked, or is it about to be
152
+ built blind from prose?
153
+ - **Testing.** Does the predicted coverage match the gate that is on?
154
+
155
+ Apply the fixes. Then stop and present the spec, leading with a short **what the critique
156
+ changed** note: the splits, gaps, or scope cuts made, or "nothing, the draft held up".
157
+
158
+ That note is the point. It shows the gate working before a line of code exists.
159
+
160
+ ## Rules
161
+
162
+ - Small, reviewable steps. A diff too large to read means the step was too large.
163
+ - Build in order. Each step leaves the project working.
164
+ - Lock data contracts early and mark load-bearing shapes.
165
+ - Scope honestly. State what is deferred so the item stays contained.
166
+ - The plans belong to the user. Propose, show the exact change, and wait.
167
+ - This skill plans. It never writes product code, and never starts building.
168
+
169
+ ## Formatting
170
+
171
+ Match the conventions in `religion/context/ai-interaction.md`: concise, scannable
172
+ markdown, lists for enumerations and tables for matrices rather than dense paragraphs.
@@ -0,0 +1,67 @@
1
+ # <Feature name>
2
+
3
+ **Type:** Feature
4
+ **From build plan:** item <n>
5
+ **Status:** not started
6
+
7
+ ## Goal
8
+
9
+ What this delivers, in a sentence or two, and why it matters. Someone reading only this
10
+ section should know what will be true when the work is done.
11
+
12
+ ## Design reference
13
+
14
+ For visual or replication work, link the reference here: the mockups under `prototypes/`
15
+ when they exist, or an image saved under `religion/reference/`. Prose underspecifies a
16
+ visual target, and the approximation costs more to correct than the reference costs to
17
+ obtain. Delete this section when the work has no visual target.
18
+
19
+ ## In scope
20
+
21
+ - The specific things this work includes.
22
+
23
+ ## Out of scope
24
+
25
+ - What it deliberately does not touch, and which later item picks it up.
26
+
27
+ ## Build loop
28
+
29
+ Build one step at a time, never the whole item at once.
30
+
31
+ 1. The step is planned before any code is written.
32
+ 2. Just that step is implemented, as the smallest change that satisfies its outcome.
33
+ 3. The diff is shown, not whole files, and explained in plain language.
34
+ 4. Its stated outcome is proved with evidence, then the step is approved.
35
+
36
+ Never accept a step you have not read. If a diff is too large to review, the step was too
37
+ large, so split it.
38
+
39
+ ## Build steps
40
+
41
+ Small, reviewable units. Each ends with something that works, and each carries an
42
+ observable outcome that can be checked. These boxes are ticked as the steps land, which is
43
+ what lets a cleared context resume from the first unchecked one.
44
+
45
+ - [ ] **Step 1 - <what it builds>** - what changes. *Done when:* <observable outcome>.
46
+ - [ ] **Step 2 - <what it builds>** - what changes. *Done when:* <observable outcome>.
47
+
48
+ ## Files and areas
49
+
50
+ - The files or modules this creates or changes.
51
+
52
+ ## Data and contracts
53
+
54
+ - Types, stored shapes, or interface shapes involved, or "none".
55
+ - Mark anything later work will depend on as load-bearing.
56
+
57
+ ## Testing
58
+
59
+ - How the outcomes are verified, per step.
60
+ - When a test command is declared, name the in-scope logic that needs a test: parsers,
61
+ formatters, validators, server actions. Not components or integration surfaces.
62
+ - When no runner is configured, say so and rely on running it, a screenshot, and the build.
63
+
64
+ ## Notes for the agent
65
+
66
+ - Conventions and constraints this work must respect, drawn from the coding standards and
67
+ the project overview. Anything that would be wrong in a way review would not catch.
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: fix
3
+ summary: spec an unplanned bug or small change, or repair a recorded finding
4
+ description: "Write a short spec for an unplanned bug or small change into religion/context/current-work.md so it runs through the same reviewed loop as planned work, then stop. Given a finding identifier instead, specs the repair of that recorded finding. Fixes are archived under religion/history/fixes/ and never touch the build plan. Use when the user runs /fix, reports a bug, asks to fix or change something that is not a planned item, or asks to pick up a finding from the ledger."
5
+ ---
6
+
7
+ # fix - spec an unplanned change
8
+
9
+ Same loop as planned work, smaller spec. A fix is not a build-plan item: it is not
10
+ numbered, it ticks nothing, and it archives on its own.
11
+
12
+ ## Input
13
+
14
+ - **A description** - `/fix "password reset email never sends"`. A problem stated in the
15
+ conversation already counts; this skill does not scan the project hoping to find
16
+ something wrong.
17
+ - **A finding identifier** - `/fix F-03` specs the repair of that ledger entry.
18
+
19
+ Without either, ask what is wrong. Do not guess.
20
+
21
+ ## Step 1 - understand the problem
22
+
23
+ **For a described problem**, establish what actually happens before writing what should.
24
+ Reproduce it if you can do so cheaply. If the cause is genuinely unclear and finding it
25
+ would mean exploring, stop and point at /debug, which isolates a failure without
26
+ changing anything. Writing a fix spec against a guessed cause produces a fix for the wrong
27
+ problem.
28
+
29
+ **For a finding**, read its entry in `religion/context/findings.md`: the file and line, why
30
+ it matters, the suggested fix. The finding is the problem statement.
31
+
32
+ If something is already in progress in `religion/context/current-work.md`, say so and ask
33
+ whether to set it aside. One thing at a time is the point.
34
+
35
+ ## Step 2 - write the spec
36
+
37
+ Write `religion/context/current-work.md` following the shape in
38
+ `/feature`'s spec template, marked `Type: Fix`, with no build-plan number. Keep it
39
+ short. A fix that needs a long spec is a feature that has not admitted it yet, and should
40
+ go through /feature instead.
41
+
42
+ Fill in:
43
+
44
+ - **Goal** - what is wrong, and what will be true afterwards.
45
+ - **Cause** - what actually produces the behavior, and how that was established. If the
46
+ cause is a guess, say so; a fix built on a guess needs review to know that.
47
+ - **In and out of scope** - especially what nearby brokenness is deliberately not being
48
+ fixed now. Fixes sprawl more easily than features because the surrounding code is already
49
+ under suspicion.
50
+ - **Build steps** - usually one or two, each with an observable outcome.
51
+ - **Testing** - when a test runner is configured and the fix touches logic, the fix ships a
52
+ test that fails without it. A bug that could recur silently is exactly what the test gate
53
+ is for.
54
+
55
+ For a finding repair, name the finding identifier in the Goal so the archive and the ledger
56
+ agree about what happened.
57
+
58
+ ## Step 3 - stop
59
+
60
+ Present the spec for review. This skill plans; /implement builds it.
61
+
62
+ For a finding repair, note that implementation marks the finding `fixed` and only a later
63
+ /audit moves it to `closed`.
64
+
65
+ ## Rules
66
+
67
+ - A fix needs a real problem statement. Do not invent one.
68
+ - Do not fix things nobody reported while you are in there. Note them instead.
69
+ - If the fix turns out to be feature-sized, stop and say so rather than growing the spec.
70
+ - Never mark a finding `accepted` or `invalid`. Those are the user's call and a review's
71
+ verdict.
72
+
73
+ ## Formatting
74
+
75
+ Match the conventions in `religion/context/ai-interaction.md`: concise, scannable
76
+ markdown, lists for enumerations and tables for matrices rather than dense paragraphs.
@@ -0,0 +1,174 @@
1
+ ---
2
+ name: implement
3
+ summary: build the current spec one reviewed step at a time
4
+ description: "Build the feature, fix, or rollback spec'd in religion/context/current-work.md, one small reviewable step at a time. Implements each step as the smallest change that satisfies its stated outcome, shows the diff and explains it in plain language, proves the outcome with evidence, ticks the step off so progress survives a cleared context, and resumes from the first unchecked step when interrupted. Repairs open high-severity findings as extra reviewed steps and has them re-reviewed independently. Ends with a review packet; the work commit and any merge belong to /complete. Use when the user runs /implement, or asks to build, start, continue, or resume the current work item once its spec is ready."
5
+ ---
6
+
7
+ # implement - build the current spec, one reviewed step at a time
8
+
9
+ Where this sits:
10
+
11
+ feature, fix, or rollback -> [implement] -> complete
12
+ (the spec) (build it) (commit, close it out)
13
+
14
+ The spec was written and reviewed. This skill turns it into code without vibe coding:
15
+ small steps, a visible diff and a plain-language explanation for each, evidence that its
16
+ outcome is met, and iteration until it works.
17
+
18
+ ## Before you start
19
+
20
+ **Read `religion/config.json`.** A missing file means defaults. If it exists but cannot
21
+ be parsed, stop and point at /doctor; a skill that is about to change code must not
22
+ guess past broken configuration.
23
+
24
+ **Read the spec.** If `religion/context/current-work.md` is still the stub, or its status
25
+ is already complete, stop and say to run /feature, /fix, or
26
+ /rollback first.
27
+
28
+ **Take the context.** Conventions from `religion/context/coding-standards.md`, the data
29
+ model from the project overview. Code that ignores them is rework, not progress.
30
+
31
+ **Resuming?** Steps already ticked (`- [x]`) mean this was started earlier and
32
+ interrupted, usually by a cleared context. That is expected and costs nothing. Read which
33
+ steps are done, check the working tree and recent commits to see what actually landed, and
34
+ continue from the **first unchecked step**. Do not start over, and do not re-verify
35
+ completed steps unless something suggests they broke.
36
+
37
+ **A rollback spec** carries `Type: Rollback`. Apply it by recomputing the diff command the
38
+ spec records, confirming it still matches, then applying it in reverse with three-way
39
+ conflict detection and staging it. Show the staged diff and confirm no workflow-owned path
40
+ was touched before presenting the step. Never write the reversal freehand, and never run a
41
+ whole-commit revert: the commits being reversed also carry the archive and plan bookkeeping
42
+ that must survive. On a conflict, stop and report the paths and the later commit involved
43
+ rather than resolving it.
44
+
45
+ ## Step 1 - position the work
46
+
47
+ Read `git.mode`.
48
+
49
+ **`trunk`** (the default) works on the branch already checked out. Do not create a branch.
50
+ If the current branch looks wrong for this work, say so and ask; do not switch or create
51
+ one unprompted.
52
+
53
+ **`branch-per-item`** creates and checks out a branch named from the spec using the
54
+ configured prefix. On a resume the branch exists already, so check it out rather than
55
+ creating a second one.
56
+
57
+ Either way, if the project is not a git repository, say so and ask the user to initialize
58
+ one. The loop needs history to be reviewable.
59
+
60
+ ## Step 2 - build one step
61
+
62
+ Set the spec's status to `in progress` before the first code change of this run, and again
63
+ whenever work resumes after a passing check and touches product code. That invalidates
64
+ stale verification state.
65
+
66
+ Work through the build steps **in order, one at a time**. For each:
67
+
68
+ 1. **Implement just that step.** The smallest change that satisfies its stated outcome.
69
+ Nothing from a later step, nothing nobody asked for.
70
+ 2. **Show the diff**, not whole files.
71
+ 3. **Explain it, and prove it.** What the step delivered, one line per changed file on
72
+ what it does and why, then the outcome shown true with evidence: command output, a
73
+ screenshot, a passing assertion. Keep it concrete; this is the comprehension gate, not
74
+ a ritual. Add a short **how to try it** line when there is a manual path.
75
+ 4. **Verify what the step touched.** Run the focused checks for this change: the relevant
76
+ test, the typecheck, whatever proves this diff. The full `Verify` command runs once
77
+ before the work is completed, so a step does not pay for the whole suite every time.
78
+ Run the full command earlier anyway if a step could plausibly break something far away.
79
+
80
+ With `verification.logicTests: "required"`, a logic change with no configured runner
81
+ stops and points at /tests. With `when-configured`, the gate applies only when a
82
+ test command is declared. When it is on, a step that adds in-scope logic ships a passing
83
+ test in the same diff. Interface and integration steps ride on running it, a screenshot,
84
+ and the build. With `verification.uiEvidence: "required"`, an interface outcome cannot
85
+ pass on build output alone.
86
+
87
+ Never install a runner mid-step unless this spec is what sets that runner up.
88
+ 5. **Iterate until it works.** If it fails, revise and re-test. After two or three
89
+ attempts that do not work, **stop**. Report what each attempt did and why you think it
90
+ is failing, and offer to hand it to /debug, which reproduces the failure and
91
+ tests competing hypotheses in parallel. Do not keep trying variations.
92
+ 6. **Tick the step** (`- [x]`) once its gate is satisfied, so progress survives a cleared
93
+ context. If the step repaired a finding, mark that finding `fixed` and note the repair
94
+ in its resolution line. Never mark it `closed`; see Step 3.
95
+ 7. **Then prompt, according to config.**
96
+
97
+ With `workflow.stepReview: "item"`, do not prompt. Continue to the next step and
98
+ collect everything into one packet at the end. Still stop early for a failed check, a
99
+ decision, a conflict, scope drift, or anything in the first tier of the authority rules.
100
+
101
+ With `stepReview: "every"`, offer only the options that config actually allows:
102
+
103
+ - **Continue** - move to the next step.
104
+ - **Commit checkpoint** - only when `git.checkpoints` is `every-step` or `squash`.
105
+ Choosing it is the approval that authorizes the commit. Commit just this step with a
106
+ conventional message describing what the change does.
107
+ - **Walk me through it** - a deeper, line-level explanation: why this approach, what
108
+ each part does, the gotchas. Then re-ask. A loop back, not a terminal choice.
109
+ - **Stop here** - pause. Say where things stand and how to resume.
110
+
111
+ Use the tool's short input prompt when there is one. When you have just produced a long
112
+ block to read, ask in plain text instead, so the prompt does not cover what is still
113
+ being read.
114
+
115
+ Never batch the whole item into one diff. A diff too large to read means the step was too
116
+ large; split it.
117
+
118
+ ## Step 3 - clear the ledger before handing off
119
+
120
+ Read `religion/context/findings.md`. A P0 or P1 finding that is `open` or `fixed` will
121
+ block completion, so close the loop now rather than discovering it later.
122
+
123
+ For each `open` P0 or P1:
124
+
125
+ 1. **Append it to the spec's build steps** first (`- [ ] Repair F-03 - <title>`), so the
126
+ repair is on the record and survives a cleared context.
127
+ 2. Build it through the same loop as Step 2: smallest change, diff, explanation, evidence.
128
+ 3. Tick the step and mark the finding `fixed`.
129
+
130
+ Then have the repairs re-reviewed. Run /audit over the repaired code **in a
131
+ subagent with fresh context**, and record what it returns. The independence is the point:
132
+ a repair is not done when the code changes, it is done when a review that did not write it
133
+ has looked at the result, because a fix can introduce a worse defect than the one it
134
+ removed. Reviewing your own repair in the context that produced it is not that review.
135
+
136
+ A finding that a user decides not to fix is `accepted`, and only they may set it, with
137
+ their reason recorded. A finding that looks wrong goes back to review to be marked
138
+ `invalid` with evidence. This skill sets neither.
139
+
140
+ ## Step 4 - hand off
141
+
142
+ When every step is built and its gate has passed, stop with a compact review packet:
143
+
144
+ - where the work sits: branch, or the current branch under trunk mode
145
+ - what changed, grouped by file or area
146
+ - checks run, with the exact command and result for each
147
+ - how to try it manually
148
+ - ledger state: any findings still `open` or `fixed`, by identifier
149
+ - known risks, skipped checks, or follow-ups
150
+ - next action, normally /complete
151
+
152
+ Set the spec's status to `verified` immediately before that packet, but only when every
153
+ required command, outcome, and configured gate actually passed. A gate that could not run
154
+ is a blocker, not a pass.
155
+
156
+ Then say that /complete runs the full `Verify`, archives the spec, updates the
157
+ build plan, makes the work commit, and asks separately before any merge or push.
158
+
159
+ ## Rules
160
+
161
+ - One small step per diff, and never a commit before its review gate is satisfied.
162
+ - Explain every change in plain language. Understanding the code is the point.
163
+ - Build only what the spec says. If the spec is wrong or thin, stop and fix the spec
164
+ first. Do not improvise around it.
165
+ - Follow the project's coding standards, including scoping user-owned queries by the
166
+ authenticated identity taken from the server.
167
+ - Checkpoints are optional rollback points. The work commit, any merge, and any push
168
+ belong to /complete.
169
+ - This skill does not merge, push, or complete.
170
+
171
+ ## Formatting
172
+
173
+ Match the conventions in `religion/context/ai-interaction.md`: concise, scannable
174
+ markdown, lists for enumerations and tables for matrices rather than dense paragraphs.
@@ -0,0 +1,150 @@
1
+ ---
2
+ name: overview
3
+ summary: distill the two planning documents into the project's source of truth
4
+ description: "Validate the two user-owned planning documents and generate religion/context/project-overview.md from them, the single source of truth every session loads. Proposes a normalized checkbox build plan when the plan is still loose bullets, separates what the product already does from what is queued, derives a concrete domain model and a code map, and records contradictions as open questions that can block work in the areas they affect. Also runs automatically when the plans have changed since the overview was generated. Use when the user runs /overview, has just written or edited the plans, asks to regenerate the project overview, or when another skill finds the overview stale."
5
+ ---
6
+
7
+ # overview - turn the two plans into the source of truth
8
+
9
+ Where this sits:
10
+
11
+ project-plan.md + build-plan.md -> [this skill] -> project-overview.md
12
+ (what and why) (what order) (what everything reads)
13
+
14
+ The plans are yours: long, rough, written in whatever order made sense at the time. The
15
+ overview is the distilled version every skill reads every session. Regenerating it is
16
+ cheap; working from a stale one is not.
17
+
18
+ ## When this runs
19
+
20
+ **Explicitly**, when the user asks.
21
+
22
+ **Automatically**, when a skill that reads the overview finds it stale. Any skill in that
23
+ position follows the steps below first, reports what changed, and then continues with what
24
+ it was asked to do. Nothing acts on a stale overview.
25
+
26
+ ## Staleness
27
+
28
+ The generated file carries a hash of the two plans it was built from:
29
+
30
+ <!-- religion:source-hash <16 hex characters> -->
31
+
32
+ Compute it exactly this way, so that two runs never disagree and report a false change:
33
+ concatenate the raw bytes of `religion/project-plan.md` then `religion/build-plan.md`
34
+ with nothing between them, take the SHA-256, and use the first 16 characters of the
35
+ lowercase hexadecimal digest.
36
+
37
+ cat religion/project-plan.md religion/build-plan.md | shasum -a 256 | cut -c1-16
38
+
39
+ Recompute it over the current plans. A mismatch means the plans moved and the overview did
40
+ not. A missing stamp means an overview generated before this mechanism existed, or one
41
+ hand-edited; treat both as stale.
42
+
43
+ ## Step 1 - read the plans
44
+
45
+ Read `religion/project-plan.md` and `religion/build-plan.md` in full, plus the existing
46
+ overview when there is one, so that a regeneration can report what changed rather than
47
+ just replacing the file.
48
+
49
+ Sections 6 through 8 of the project plan are optional. A plan that deleted them has not
50
+ made a mistake, and the corresponding overview headings are omitted rather than filled
51
+ with "not applicable".
52
+
53
+ ## Step 2 - validate, and propose fixes for approval
54
+
55
+ Check both plans are usable before generating from them:
56
+
57
+ - **Required sections.** Sections 1 through 5 of the project plan are answered, not left
58
+ as the placeholder prompts they ship with.
59
+ - **Build plan shape.** The build plan is a checkbox list. The loop reads those boxes to
60
+ know what is next and what is done, so a plain bullet list breaks progress tracking.
61
+ - **Item sizing.** Each build-plan item is a feature-sized outcome, not a whole product
62
+ area ("Auth, billing, and dashboard") or a loose task ("Database").
63
+ - **Item kind.** The build plan is for features. An item that describes something broken
64
+ ("search ranking is bad", "the switcher does not remember") is a fix, and an item that
65
+ describes reviewing rather than building ("audit the hook types") is a review pass.
66
+ Both have their own path and their own place in the history, and neither belongs in the
67
+ plan. Point them at /fix and /audit, and propose removing them.
68
+ - **Numbering.** Completed items keep their numbers, since archives refer back to them.
69
+
70
+ When something is wrong, show the exact proposed replacement and ask before writing. These
71
+ two files are the user's. Never edit them silently, and never rewrite prose that is merely
72
+ rough: a plan can be informal and still be usable, and only shape problems that actually
73
+ break the loop are worth proposing a change for.
74
+
75
+ If the user declines a proposed fix, say what will not work as a result and generate
76
+ anyway.
77
+
78
+ ## Step 3 - generate the overview
79
+
80
+ Write `religion/context/project-overview.md` following
81
+ `reference/project-overview-template.md`. Stamp the freshly computed source hash.
82
+
83
+ Three sections are real work rather than distillation.
84
+
85
+ **What it does** and **Roadmap** are deliberately separate. The first is the product's
86
+ identity, taken from section 3; the second is the queue, taken from the build plan. On a
87
+ new project they are nearly the same list. On an established one they barely overlap, and
88
+ collapsing them produces an overview claiming the product's features are whatever three
89
+ small things happen to be queued. Never merge them, and never fill one from the other.
90
+
91
+ **Domain model** turns the plan's list of nouns into concrete shapes with fields and
92
+ relationships. What that means depends on the project: persisted entities for something
93
+ with a database, the shapes read and emitted for a compiler or CLI, the public types and
94
+ their contracts for a library. A project with no database still has a domain model. Write
95
+ what it actually works with and say what kind it is.
96
+
97
+ **Code map** records where things live, derived by looking at the repository rather than
98
+ the plans, since neither plan describes layout. For several packages, name the boundary
99
+ each one owns. Without this, every spec re-derives the layout from scratch.
100
+
101
+ Mark any shape later work will depend on as load-bearing.
102
+
103
+ Derive, do not invent. If the plans do not determine something a section needs, that is an
104
+ open question, not a gap to fill with a plausible guess. The code map is the one exception:
105
+ it is read from the repository, because that is where the answer actually is.
106
+
107
+ ## Step 4 - record open questions
108
+
109
+ Contradictions and gaps go in the **Open questions** section, and each one names what it
110
+ affects:
111
+
112
+ - **Storage engine** (affects: data model, features 3 and 7) - section 5 names
113
+ Postgres while section 4 describes local SQLite files. Resolve in the plans and
114
+ regenerate.
115
+
116
+ The "affects" list is load-bearing, not decoration. Work touching a named area is blocked
117
+ while the question is open, and work elsewhere proceeds normally. Scope each one as
118
+ narrowly as the evidence allows: a question marked as affecting everything stops the
119
+ project, so only write that when it is true.
120
+
121
+ Raise a question only for a real conflict or a real gap that later work will hit. Stylistic
122
+ thinness is not an open question.
123
+
124
+ ## Step 5 - report
125
+
126
+ Lead with what changed, then the questions:
127
+
128
+ - **generated** or **regenerated**, and on a regeneration, what moved: sections added or
129
+ removed, shapes or fields that changed, items that entered or left the roadmap
130
+ - open questions, by title, and what each blocks
131
+ - any plan fix that was proposed, and whether it was applied
132
+ - the next action
133
+
134
+ On a first generation, say so plainly rather than reporting a diff against nothing.
135
+
136
+ ## Rules
137
+
138
+ - The two plans belong to the user. Propose, show the exact change, and wait. Never edit
139
+ them without approval.
140
+ - The overview is derived. Never hand-edit it, and never patch it to work around a plan
141
+ that says something different; fix the plan and regenerate.
142
+ - Derive from the plans only. An overview that states something neither plan supports is
143
+ worse than one with an open question, because nothing later will question it.
144
+ - Do not turn a rough plan into a polished one. Distil what is there.
145
+ - Scope every open question to what it genuinely affects.
146
+
147
+ ## Formatting
148
+
149
+ Match the conventions in `religion/context/ai-interaction.md`: concise, scannable
150
+ markdown, lists for enumerations and tables for matrices rather than dense paragraphs.