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.
- package/LICENSE +21 -0
- package/README.md +47 -0
- package/dist/bin/religion.js +209 -0
- package/dist/lib/dashboard.js +123 -0
- package/dist/lib/doctor.js +164 -0
- package/dist/lib/install.js +170 -0
- package/dist/lib/paths.js +40 -0
- package/dist/lib/state.js +117 -0
- package/dist/lib/status.js +88 -0
- package/package.json +40 -0
- package/template/.agents/skills/audit/SKILL.md +169 -0
- package/template/.agents/skills/auto/SKILL.md +110 -0
- package/template/.agents/skills/browser-tests/SKILL.md +65 -0
- package/template/.agents/skills/check/SKILL.md +86 -0
- package/template/.agents/skills/ci/SKILL.md +79 -0
- package/template/.agents/skills/complete/SKILL.md +184 -0
- package/template/.agents/skills/debug/SKILL.md +72 -0
- package/template/.agents/skills/discovery/SKILL.md +83 -0
- package/template/.agents/skills/distill/SKILL.md +95 -0
- package/template/.agents/skills/doctor/SKILL.md +65 -0
- package/template/.agents/skills/extend/SKILL.md +102 -0
- package/template/.agents/skills/feature/SKILL.md +172 -0
- package/template/.agents/skills/feature/reference/spec-template.md +67 -0
- package/template/.agents/skills/fix/SKILL.md +76 -0
- package/template/.agents/skills/implement/SKILL.md +174 -0
- package/template/.agents/skills/overview/SKILL.md +150 -0
- package/template/.agents/skills/overview/reference/project-overview-template.md +101 -0
- package/template/.agents/skills/prototype/SKILL.md +90 -0
- package/template/.agents/skills/release/SKILL.md +88 -0
- package/template/.agents/skills/rollback/SKILL.md +114 -0
- package/template/.agents/skills/setup/SKILL.md +105 -0
- package/template/.agents/skills/status/SKILL.md +63 -0
- package/template/.agents/skills/tests/SKILL.md +90 -0
- package/template/.agents/skills/try/SKILL.md +59 -0
- package/template/.claude/hooks/guard-rendered-output.mjs +49 -0
- package/template/.claude/hooks/guard-tier-one.mjs +63 -0
- package/template/.claude/hooks/write-handoff.mjs +83 -0
- package/template/.claude/skills/audit/SKILL.md +169 -0
- package/template/.claude/skills/auto/SKILL.md +110 -0
- package/template/.claude/skills/browser-tests/SKILL.md +65 -0
- package/template/.claude/skills/check/SKILL.md +86 -0
- package/template/.claude/skills/ci/SKILL.md +79 -0
- package/template/.claude/skills/complete/SKILL.md +184 -0
- package/template/.claude/skills/debug/SKILL.md +72 -0
- package/template/.claude/skills/discovery/SKILL.md +83 -0
- package/template/.claude/skills/distill/SKILL.md +95 -0
- package/template/.claude/skills/doctor/SKILL.md +65 -0
- package/template/.claude/skills/extend/SKILL.md +102 -0
- package/template/.claude/skills/feature/SKILL.md +172 -0
- package/template/.claude/skills/feature/reference/spec-template.md +67 -0
- package/template/.claude/skills/fix/SKILL.md +76 -0
- package/template/.claude/skills/implement/SKILL.md +174 -0
- package/template/.claude/skills/overview/SKILL.md +150 -0
- package/template/.claude/skills/overview/reference/project-overview-template.md +101 -0
- package/template/.claude/skills/prototype/SKILL.md +90 -0
- package/template/.claude/skills/release/SKILL.md +88 -0
- package/template/.claude/skills/rollback/SKILL.md +114 -0
- package/template/.claude/skills/setup/SKILL.md +105 -0
- package/template/.claude/skills/status/SKILL.md +63 -0
- package/template/.claude/skills/tests/SKILL.md +90 -0
- package/template/.claude/skills/try/SKILL.md +59 -0
- package/template/AGENTS.md +206 -0
- package/template/CLAUDE.md +175 -0
- package/template/religion/.state/README.md +10 -0
- package/template/religion/.state/settings-template.json +19 -0
- package/template/religion/build-plan.md +43 -0
- package/template/religion/config.json +26 -0
- package/template/religion/context/ai-interaction.md +84 -0
- package/template/religion/context/coding-standards.md +77 -0
- package/template/religion/context/current-work.md +8 -0
- package/template/religion/context/findings.md +9 -0
- package/template/religion/context/handoff.md +8 -0
- package/template/religion/context/project-overview.md +8 -0
- package/template/religion/history/features/README.md +8 -0
- package/template/religion/history/fixes/README.md +6 -0
- package/template/religion/history/rollbacks/README.md +7 -0
- package/template/religion/learning/journal.md +7 -0
- package/template/religion/learning/lessons.md +8 -0
- package/template/religion/project-plan.md +49 -0
- 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.
|