create-religion 1.1.0 → 1.2.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/package.json +1 -1
- package/template/.agents/skills/audit/SKILL.md +6 -2
- package/template/.agents/skills/auto/SKILL.md +43 -2
- package/template/.agents/skills/fix/SKILL.md +8 -6
- package/template/.claude/skills/audit/SKILL.md +6 -2
- package/template/.claude/skills/auto/SKILL.md +43 -2
- package/template/.claude/skills/fix/SKILL.md +8 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-religion",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "A file-backed, spec-driven AI development workflow. Spec before code, small reviewed diffs, and project state in markdown so a cleared context costs nothing.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Nate",
|
|
@@ -104,6 +104,10 @@ shape; the prose below it is for people.
|
|
|
104
104
|
**Suggested fix:** ...
|
|
105
105
|
**Resolution:**
|
|
106
106
|
|
|
107
|
+
When the pass is re-reviewing a repair and finds a new problem in the code that repair
|
|
108
|
+
changed, add `**Surfaced by:** F-NN` after **Found**, naming the finding whose repair exposed
|
|
109
|
+
it. That link is what keeps a defect a repair introduced attached to the repair.
|
|
110
|
+
|
|
107
111
|
Identifiers are sequential within the ledger, one past the highest present, never reused
|
|
108
112
|
and never renumbered while their entries live there. Completion archives resolved entries
|
|
109
113
|
under a work-item prefix, and that prefixed form is the permanent reference.
|
|
@@ -122,9 +126,9 @@ After reviewing:
|
|
|
122
126
|
- Append each new confirmed finding as `open`.
|
|
123
127
|
- Record a lead worth tracking as `unverified`. It never gates anything.
|
|
124
128
|
- Update entries this pass re-examined, noting the evidence in **Resolution**.
|
|
125
|
-
- Move `fixed` to `closed` only when all
|
|
129
|
+
- Move `fixed` to `closed` only when all four hold: this pass covered the finding's file,
|
|
126
130
|
re-examining the repaired code confirmed the defect is gone and nothing worse replaced
|
|
127
|
-
it, and the report names it as closed. An unrelated new problem in the same file gets its
|
|
131
|
+
it, no finding it surfaced is still `open` or `fixed`, and the report names it as closed. An unrelated new problem in the same file gets its
|
|
128
132
|
own entry. Never close implicitly.
|
|
129
133
|
- Set `accepted` only on the user's explicit decision, with their reason. Never on their
|
|
130
134
|
behalf.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: auto
|
|
3
3
|
summary: run the loop unattended, within explicit bounds
|
|
4
|
-
description: "Run the reviewed loop without stopping between steps, within bounds you set. With no argument it takes one work item and stops before completing it; `all` runs the remaining build plan; a number runs that many items. Specs, implements, verifies, applies the configured gates, repairs confirmed high-severity findings, and completes each item. Its invocation grants committing, dependency installs, and remote reads for the run, and grants nothing else: it still stops to ask before any merge. Under git.mode pull-request it lands every item on one shared integration branch and ends by opening a single aggregate review packet it never merges, after stating that whole remote budget up front and being told yes. Use only when the user runs $auto or explicitly asks for an unattended run."
|
|
4
|
+
description: "Run the reviewed loop without stopping between steps, within bounds you set. With no argument it takes one work item and stops before completing it; `all` runs the remaining build plan; a number runs that many items; `fix` works through the findings ledger instead, every class most severe first or one class such as `fix P1`, one fix per file and class, re-reviewing every repair and folding any finding a repair surfaces into the same fix. Specs, implements, verifies, applies the configured gates, repairs confirmed high-severity findings, and completes each item. Its invocation grants committing, dependency installs, and remote reads for the run, and grants nothing else: it still stops to ask before any merge. Under git.mode pull-request it lands every item on one shared integration branch and ends by opening a single aggregate review packet it never merges, after stating that whole remote budget up front and being told yes. Use only when the user runs $auto or explicitly asks for an unattended run."
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# auto - the same loop, without the pauses
|
|
@@ -19,6 +19,7 @@ between steps.
|
|
|
19
19
|
a bound.
|
|
20
20
|
- `$auto 3` - the next three items, completing each.
|
|
21
21
|
- `$auto resume` - continue an interrupted run from the file-backed state.
|
|
22
|
+
- `$auto fix` - the findings ledger instead of the plan; see Fix mode.
|
|
22
23
|
|
|
23
24
|
`auto.maxItems` caps successful completions. `auto.maxRepairAttempts` caps repeated
|
|
24
25
|
attempts at the same finding. `auto.finalAudit` adds one review across everything the run
|
|
@@ -65,7 +66,8 @@ Before the first item:
|
|
|
65
66
|
starts, naming the question, since a run that stops halfway through item four is worse
|
|
66
67
|
than one that never began.
|
|
67
68
|
- The working tree is clean, or the only dirt belongs to work being resumed.
|
|
68
|
-
- The plan has unchecked items
|
|
69
|
+
- The plan has unchecked items, or in fix mode the ledger has `open` or `fixed` findings in
|
|
70
|
+
range.
|
|
69
71
|
- Under `pull-request`, the repository can host one: a remote exists and the host command
|
|
70
72
|
works. A repository that cannot is a stop, not a reason to fall back to local merges. The
|
|
71
73
|
mode exists to produce review gates, and silently producing a different history instead
|
|
@@ -110,6 +112,45 @@ For every item, in plan order:
|
|
|
110
112
|
|
|
111
113
|
An item counts against `auto.maxItems` once it has landed, not once it is built.
|
|
112
114
|
|
|
115
|
+
## Fix mode
|
|
116
|
+
|
|
117
|
+
`$auto fix` works through the findings ledger instead of the build plan, under the same
|
|
118
|
+
grant, gates, landing and stop rules.
|
|
119
|
+
|
|
120
|
+
- `$auto fix` or `$auto fix all` - every class, P0 first, until no `open` finding is
|
|
121
|
+
left or a bound is reached.
|
|
122
|
+
- `$auto fix P0` through `$auto fix P3` - only that class.
|
|
123
|
+
|
|
124
|
+
**The queue.** Read `religion/context/findings.md` afresh before each fix, because every fix
|
|
125
|
+
and every review changes it. Take the classes in turn, most severe first. Within a class, the
|
|
126
|
+
`open` findings that name the same file form one group, oldest first, and each group is one
|
|
127
|
+
work item: specced by $fix with all of its identifiers, then implemented, gated,
|
|
128
|
+
completed and landed exactly as Step 2 does for a plan item. A fix confined to one file and
|
|
129
|
+
one class stays a diff someone can review; a fix that sweeps several is not.
|
|
130
|
+
|
|
131
|
+
`unverified` findings are not repaired. Nothing has confirmed them, and repairing a guess
|
|
132
|
+
produces a change nobody can check; report them instead. `fixed` findings in range are
|
|
133
|
+
re-reviewed rather than repaired again, because the repair exists and only a review can
|
|
134
|
+
close it.
|
|
135
|
+
|
|
136
|
+
**Every repair is re-reviewed.** Repair is the whole point of this mode, so after
|
|
137
|
+
implementation the repaired findings always go to $audit in a subagent with fresh
|
|
138
|
+
context, whatever `qualityGates.audit` says. Only that review closes a finding.
|
|
139
|
+
|
|
140
|
+
**Folding.** When that review raises a new finding in code the fix changed, the audit records
|
|
141
|
+
it under its own identifier with a `**Surfaced by:**` line naming the finding whose repair
|
|
142
|
+
exposed it, and it joins the current fix as another repair step, whatever its class. The
|
|
143
|
+
finding that surfaced it cannot close while it is `open` or `fixed`. A defect a repair
|
|
144
|
+
introduced belongs with that repair: left for a later fix, it loses the context that
|
|
145
|
+
explains it.
|
|
146
|
+
|
|
147
|
+
**Bounds.** `auto.maxRepairAttempts` caps the attempts at any one finding. A fix folds in at
|
|
148
|
+
most three findings; a fourth is still recorded, but left out of this fix, and the fix
|
|
149
|
+
completes with what it has, its unclosed findings staying in the ledger. When completion is
|
|
150
|
+
blocked because a P0 or P1 is still `open` or `fixed`, the run stops. A finding the run has
|
|
151
|
+
already given up on is not queued again, and `auto.maxItems` caps completed fixes. Without
|
|
152
|
+
these bounds the loop need not end: a review of a repair can always find something new.
|
|
153
|
+
|
|
113
154
|
## Step 3 - close the run
|
|
114
155
|
|
|
115
156
|
Under `trunk` and `branch-per-item` there is nothing to close: the items are done and the
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fix
|
|
3
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
|
|
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 one or more finding identifiers instead, specs the repair of those recorded findings together. 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
5
|
---
|
|
6
6
|
|
|
7
7
|
# fix - spec an unplanned change
|
|
@@ -14,7 +14,9 @@ numbered, it ticks nothing, and it archives on its own.
|
|
|
14
14
|
- **A description** - `$fix "password reset email never sends"`. A problem stated in the
|
|
15
15
|
conversation already counts; this skill does not scan the project hoping to find
|
|
16
16
|
something wrong.
|
|
17
|
-
- **
|
|
17
|
+
- **Finding identifiers** - `$fix F-03` specs the repair of that ledger entry, and
|
|
18
|
+
`$fix F-03 F-07` repairs several together. Group findings only when they share a file
|
|
19
|
+
and a severity, as $auto's fix mode does: one fix then stays one reviewable diff.
|
|
18
20
|
|
|
19
21
|
- **Nothing** - read `religion/context/inbox.md` and offer what is there. Those notes were
|
|
20
22
|
taken mid-build precisely because they were not worth stopping for at the time, and this is
|
|
@@ -31,8 +33,8 @@ would mean exploring, stop and point at $debug, which isolates a failure without
|
|
|
31
33
|
changing anything. Writing a fix spec against a guessed cause produces a fix for the wrong
|
|
32
34
|
problem.
|
|
33
35
|
|
|
34
|
-
**For
|
|
35
|
-
it matters, the suggested fix. The
|
|
36
|
+
**For findings**, read each entry in `religion/context/findings.md`: the file and line, why
|
|
37
|
+
it matters, the suggested fix. The findings are the problem statement, one repair step each.
|
|
36
38
|
|
|
37
39
|
If something is already in progress in `religion/context/current-work.md`, say so and ask
|
|
38
40
|
whether to set it aside. One thing at a time is the point.
|
|
@@ -57,8 +59,8 @@ Fill in:
|
|
|
57
59
|
test that fails without it. A bug that could recur silently is exactly what the test gate
|
|
58
60
|
is for.
|
|
59
61
|
|
|
60
|
-
For a finding repair, name
|
|
61
|
-
agree about what happened.
|
|
62
|
+
For a finding repair, name every finding identifier in the Goal so the archive and the
|
|
63
|
+
ledger agree about what happened.
|
|
62
64
|
|
|
63
65
|
## Step 3 - stop
|
|
64
66
|
|
|
@@ -104,6 +104,10 @@ shape; the prose below it is for people.
|
|
|
104
104
|
**Suggested fix:** ...
|
|
105
105
|
**Resolution:**
|
|
106
106
|
|
|
107
|
+
When the pass is re-reviewing a repair and finds a new problem in the code that repair
|
|
108
|
+
changed, add `**Surfaced by:** F-NN` after **Found**, naming the finding whose repair exposed
|
|
109
|
+
it. That link is what keeps a defect a repair introduced attached to the repair.
|
|
110
|
+
|
|
107
111
|
Identifiers are sequential within the ledger, one past the highest present, never reused
|
|
108
112
|
and never renumbered while their entries live there. Completion archives resolved entries
|
|
109
113
|
under a work-item prefix, and that prefixed form is the permanent reference.
|
|
@@ -122,9 +126,9 @@ After reviewing:
|
|
|
122
126
|
- Append each new confirmed finding as `open`.
|
|
123
127
|
- Record a lead worth tracking as `unverified`. It never gates anything.
|
|
124
128
|
- Update entries this pass re-examined, noting the evidence in **Resolution**.
|
|
125
|
-
- Move `fixed` to `closed` only when all
|
|
129
|
+
- Move `fixed` to `closed` only when all four hold: this pass covered the finding's file,
|
|
126
130
|
re-examining the repaired code confirmed the defect is gone and nothing worse replaced
|
|
127
|
-
it, and the report names it as closed. An unrelated new problem in the same file gets its
|
|
131
|
+
it, no finding it surfaced is still `open` or `fixed`, and the report names it as closed. An unrelated new problem in the same file gets its
|
|
128
132
|
own entry. Never close implicitly.
|
|
129
133
|
- Set `accepted` only on the user's explicit decision, with their reason. Never on their
|
|
130
134
|
behalf.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: auto
|
|
3
3
|
summary: run the loop unattended, within explicit bounds
|
|
4
|
-
description: "Run the reviewed loop without stopping between steps, within bounds you set. With no argument it takes one work item and stops before completing it; `all` runs the remaining build plan; a number runs that many items. Specs, implements, verifies, applies the configured gates, repairs confirmed high-severity findings, and completes each item. Its invocation grants committing, dependency installs, and remote reads for the run, and grants nothing else: it still stops to ask before any merge. Under git.mode pull-request it lands every item on one shared integration branch and ends by opening a single aggregate review packet it never merges, after stating that whole remote budget up front and being told yes. Use only when the user runs /auto or explicitly asks for an unattended run."
|
|
4
|
+
description: "Run the reviewed loop without stopping between steps, within bounds you set. With no argument it takes one work item and stops before completing it; `all` runs the remaining build plan; a number runs that many items; `fix` works through the findings ledger instead, every class most severe first or one class such as `fix P1`, one fix per file and class, re-reviewing every repair and folding any finding a repair surfaces into the same fix. Specs, implements, verifies, applies the configured gates, repairs confirmed high-severity findings, and completes each item. Its invocation grants committing, dependency installs, and remote reads for the run, and grants nothing else: it still stops to ask before any merge. Under git.mode pull-request it lands every item on one shared integration branch and ends by opening a single aggregate review packet it never merges, after stating that whole remote budget up front and being told yes. Use only when the user runs /auto or explicitly asks for an unattended run."
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# auto - the same loop, without the pauses
|
|
@@ -19,6 +19,7 @@ between steps.
|
|
|
19
19
|
a bound.
|
|
20
20
|
- `/auto 3` - the next three items, completing each.
|
|
21
21
|
- `/auto resume` - continue an interrupted run from the file-backed state.
|
|
22
|
+
- `/auto fix` - the findings ledger instead of the plan; see Fix mode.
|
|
22
23
|
|
|
23
24
|
`auto.maxItems` caps successful completions. `auto.maxRepairAttempts` caps repeated
|
|
24
25
|
attempts at the same finding. `auto.finalAudit` adds one review across everything the run
|
|
@@ -65,7 +66,8 @@ Before the first item:
|
|
|
65
66
|
starts, naming the question, since a run that stops halfway through item four is worse
|
|
66
67
|
than one that never began.
|
|
67
68
|
- The working tree is clean, or the only dirt belongs to work being resumed.
|
|
68
|
-
- The plan has unchecked items
|
|
69
|
+
- The plan has unchecked items, or in fix mode the ledger has `open` or `fixed` findings in
|
|
70
|
+
range.
|
|
69
71
|
- Under `pull-request`, the repository can host one: a remote exists and the host command
|
|
70
72
|
works. A repository that cannot is a stop, not a reason to fall back to local merges. The
|
|
71
73
|
mode exists to produce review gates, and silently producing a different history instead
|
|
@@ -110,6 +112,45 @@ For every item, in plan order:
|
|
|
110
112
|
|
|
111
113
|
An item counts against `auto.maxItems` once it has landed, not once it is built.
|
|
112
114
|
|
|
115
|
+
## Fix mode
|
|
116
|
+
|
|
117
|
+
`/auto fix` works through the findings ledger instead of the build plan, under the same
|
|
118
|
+
grant, gates, landing and stop rules.
|
|
119
|
+
|
|
120
|
+
- `/auto fix` or `/auto fix all` - every class, P0 first, until no `open` finding is
|
|
121
|
+
left or a bound is reached.
|
|
122
|
+
- `/auto fix P0` through `/auto fix P3` - only that class.
|
|
123
|
+
|
|
124
|
+
**The queue.** Read `religion/context/findings.md` afresh before each fix, because every fix
|
|
125
|
+
and every review changes it. Take the classes in turn, most severe first. Within a class, the
|
|
126
|
+
`open` findings that name the same file form one group, oldest first, and each group is one
|
|
127
|
+
work item: specced by /fix with all of its identifiers, then implemented, gated,
|
|
128
|
+
completed and landed exactly as Step 2 does for a plan item. A fix confined to one file and
|
|
129
|
+
one class stays a diff someone can review; a fix that sweeps several is not.
|
|
130
|
+
|
|
131
|
+
`unverified` findings are not repaired. Nothing has confirmed them, and repairing a guess
|
|
132
|
+
produces a change nobody can check; report them instead. `fixed` findings in range are
|
|
133
|
+
re-reviewed rather than repaired again, because the repair exists and only a review can
|
|
134
|
+
close it.
|
|
135
|
+
|
|
136
|
+
**Every repair is re-reviewed.** Repair is the whole point of this mode, so after
|
|
137
|
+
implementation the repaired findings always go to /audit in a subagent with fresh
|
|
138
|
+
context, whatever `qualityGates.audit` says. Only that review closes a finding.
|
|
139
|
+
|
|
140
|
+
**Folding.** When that review raises a new finding in code the fix changed, the audit records
|
|
141
|
+
it under its own identifier with a `**Surfaced by:**` line naming the finding whose repair
|
|
142
|
+
exposed it, and it joins the current fix as another repair step, whatever its class. The
|
|
143
|
+
finding that surfaced it cannot close while it is `open` or `fixed`. A defect a repair
|
|
144
|
+
introduced belongs with that repair: left for a later fix, it loses the context that
|
|
145
|
+
explains it.
|
|
146
|
+
|
|
147
|
+
**Bounds.** `auto.maxRepairAttempts` caps the attempts at any one finding. A fix folds in at
|
|
148
|
+
most three findings; a fourth is still recorded, but left out of this fix, and the fix
|
|
149
|
+
completes with what it has, its unclosed findings staying in the ledger. When completion is
|
|
150
|
+
blocked because a P0 or P1 is still `open` or `fixed`, the run stops. A finding the run has
|
|
151
|
+
already given up on is not queued again, and `auto.maxItems` caps completed fixes. Without
|
|
152
|
+
these bounds the loop need not end: a review of a repair can always find something new.
|
|
153
|
+
|
|
113
154
|
## Step 3 - close the run
|
|
114
155
|
|
|
115
156
|
Under `trunk` and `branch-per-item` there is nothing to close: the items are done and the
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fix
|
|
3
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
|
|
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 one or more finding identifiers instead, specs the repair of those recorded findings together. 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
5
|
---
|
|
6
6
|
|
|
7
7
|
# fix - spec an unplanned change
|
|
@@ -14,7 +14,9 @@ numbered, it ticks nothing, and it archives on its own.
|
|
|
14
14
|
- **A description** - `/fix "password reset email never sends"`. A problem stated in the
|
|
15
15
|
conversation already counts; this skill does not scan the project hoping to find
|
|
16
16
|
something wrong.
|
|
17
|
-
- **
|
|
17
|
+
- **Finding identifiers** - `/fix F-03` specs the repair of that ledger entry, and
|
|
18
|
+
`/fix F-03 F-07` repairs several together. Group findings only when they share a file
|
|
19
|
+
and a severity, as /auto's fix mode does: one fix then stays one reviewable diff.
|
|
18
20
|
|
|
19
21
|
- **Nothing** - read `religion/context/inbox.md` and offer what is there. Those notes were
|
|
20
22
|
taken mid-build precisely because they were not worth stopping for at the time, and this is
|
|
@@ -31,8 +33,8 @@ would mean exploring, stop and point at /debug, which isolates a failure without
|
|
|
31
33
|
changing anything. Writing a fix spec against a guessed cause produces a fix for the wrong
|
|
32
34
|
problem.
|
|
33
35
|
|
|
34
|
-
**For
|
|
35
|
-
it matters, the suggested fix. The
|
|
36
|
+
**For findings**, read each entry in `religion/context/findings.md`: the file and line, why
|
|
37
|
+
it matters, the suggested fix. The findings are the problem statement, one repair step each.
|
|
36
38
|
|
|
37
39
|
If something is already in progress in `religion/context/current-work.md`, say so and ask
|
|
38
40
|
whether to set it aside. One thing at a time is the point.
|
|
@@ -57,8 +59,8 @@ Fill in:
|
|
|
57
59
|
test that fails without it. A bug that could recur silently is exactly what the test gate
|
|
58
60
|
is for.
|
|
59
61
|
|
|
60
|
-
For a finding repair, name
|
|
61
|
-
agree about what happened.
|
|
62
|
+
For a finding repair, name every finding identifier in the Goal so the archive and the
|
|
63
|
+
ledger agree about what happened.
|
|
62
64
|
|
|
63
65
|
## Step 3 - stop
|
|
64
66
|
|