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,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: audit
|
|
3
|
+
summary: review the code itself across four lenses, recording findings in the ledger
|
|
4
|
+
description: "Read-only code review across four lenses (quality, security, performance, tests) and four scopes (current work, changed files, a path, or the whole project), fanning the lenses out to subagents that read and return findings while this skill performs the single write. Records each finding in religion/context/findings.md with a durable identifier, a severity from P0 to P3, and a status, where an open or fixed P0 or P1 blocks completion. Use when the user runs /audit, asks for a code, quality, security, performance, or test review, wants dead code or duplication found, or wants a repair re-reviewed before it closes."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# audit - review the code, and record what you find
|
|
8
|
+
|
|
9
|
+
/check proves the work behaves as promised. This skill reviews the code itself.
|
|
10
|
+
|
|
11
|
+
It changes nothing except the findings ledger. It never edits source, installs anything,
|
|
12
|
+
commits, merges, or starts repair work.
|
|
13
|
+
|
|
14
|
+
## Input
|
|
15
|
+
|
|
16
|
+
Scope and lens are separate, and may appear in either order: `/audit security current`,
|
|
17
|
+
`/audit src/auth tests`.
|
|
18
|
+
|
|
19
|
+
**Scope**, defaulting to `current` when work is active, else `changed` when the tree is
|
|
20
|
+
dirty, else `full`:
|
|
21
|
+
|
|
22
|
+
- `current` - the active spec, everything the work item has changed so far, and the code
|
|
23
|
+
around it that the change affects
|
|
24
|
+
- `changed` - staged, unstaged, and untracked source, plus nearby code
|
|
25
|
+
- `full` - all project-owned source, tests, and configuration, excluding dependencies,
|
|
26
|
+
generated files, build output, caches, vendored code, and minified assets
|
|
27
|
+
- a path - that area, plus the tests and callers needed to understand it
|
|
28
|
+
|
|
29
|
+
**Lens**, defaulting to all four:
|
|
30
|
+
|
|
31
|
+
- `quality` - duplication, dead code, unreachable paths, oversized modules, abstractions
|
|
32
|
+
that do not pay for themselves, inconsistency, drift from the project's standards
|
|
33
|
+
- `security` - missing authorization, client-controlled ownership, injection, unsafe
|
|
34
|
+
parsing, data exposure, secret handling, insecure defaults, trust-boundary mistakes
|
|
35
|
+
- `performance` - repeated queries and network calls, unnecessary rendering, blocking work
|
|
36
|
+
on hot paths, unbounded loops and collections, memory growth, oversized payloads,
|
|
37
|
+
missing pagination, unsafe concurrency
|
|
38
|
+
- `tests` - important logic with no coverage, weak assertions, tests that only mirror the
|
|
39
|
+
implementation, excessive mocking, shared state, order or time dependence, skipped or
|
|
40
|
+
focused tests, swallowed failures
|
|
41
|
+
|
|
42
|
+
State the scope and lens you chose before reviewing.
|
|
43
|
+
|
|
44
|
+
## Step 1 - gather context
|
|
45
|
+
|
|
46
|
+
Read the project overview, the coding standards, the active spec, the existing findings
|
|
47
|
+
ledger (for identifiers and statuses), the configuration, and the relevant source.
|
|
48
|
+
|
|
49
|
+
For `current`, resolve the comparison base without touching the network: a base named by
|
|
50
|
+
the spec or project instructions, else the recorded default branch, else a local `main`
|
|
51
|
+
then `master`. Find the merge base and inspect the committed range through `HEAD`, then add
|
|
52
|
+
staged, unstaged, and untracked work. If no reliable base exists, say so and review the
|
|
53
|
+
spec plus local changes, without claiming committed work was covered.
|
|
54
|
+
|
|
55
|
+
For `full`, state the excluded paths before reviewing, so generated or third-party code
|
|
56
|
+
does not consume the review.
|
|
57
|
+
|
|
58
|
+
## Step 2 - run the signals that exist
|
|
59
|
+
|
|
60
|
+
Use only commands the project already has. Do not install tools, and do not fetch.
|
|
61
|
+
|
|
62
|
+
Lint and typecheck when relevant; the test command for the tests lens or to validate a
|
|
63
|
+
suspected risk; the build when the lens needs compilation evidence. A useful command that
|
|
64
|
+
does not exist is a gap worth reporting, not a reason to add one.
|
|
65
|
+
|
|
66
|
+
## Step 3 - review, one subagent per lens
|
|
67
|
+
|
|
68
|
+
Run each selected lens as its own subagent over the resolved scope. They read code and
|
|
69
|
+
**return** findings; they never write. This skill merges what comes back, assigns
|
|
70
|
+
identifiers, and performs the single write in Step 4. Parallel reviewers cannot race a
|
|
71
|
+
file that only one of them writes.
|
|
72
|
+
|
|
73
|
+
Give each subagent the scope, the file list, the standards, and its own lens only. A lens
|
|
74
|
+
that wanders into another lens produces duplicates that then have to be reconciled.
|
|
75
|
+
|
|
76
|
+
**The ledger never scopes the review.** Review the code fresh, then record what was found.
|
|
77
|
+
Working from the open findings as a checklist and verifying only those is the exact failure
|
|
78
|
+
the ledger exists to prevent: a repair can introduce a defect no existing entry points at.
|
|
79
|
+
|
|
80
|
+
Ground every finding in reachable code. Prefer a short list of real findings to a long list
|
|
81
|
+
of guesses, and do not report style differences that are merely different.
|
|
82
|
+
|
|
83
|
+
Do not broaden a focused pass because another lens looks interesting. If an obvious P0
|
|
84
|
+
appears outside the selected lens, record it as an out-of-lens critical risk, but do not
|
|
85
|
+
start searching that lens.
|
|
86
|
+
|
|
87
|
+
If a possible secret appears, never quote its value, paste the matching line, or include
|
|
88
|
+
raw output containing it. Report the redacted category, file, line, risk, and remediation.
|
|
89
|
+
|
|
90
|
+
## Step 4 - write the ledger
|
|
91
|
+
|
|
92
|
+
`religion/context/findings.md` is the durable record. Chat does not survive a cleared
|
|
93
|
+
context; this does. Create it with a `# Findings` heading if it is missing.
|
|
94
|
+
|
|
95
|
+
One block per finding. The header line is the machine-readable part and keeps this exact
|
|
96
|
+
shape; the prose below it is for people.
|
|
97
|
+
|
|
98
|
+
### F-03 [P0] open - Retained auth volumes carry the run label
|
|
99
|
+
|
|
100
|
+
**File:** ops/compose.yaml:86
|
|
101
|
+
**Found:** 2026-09-04 by audit (scope: current; lens: security)
|
|
102
|
+
**Why it matters:** ...
|
|
103
|
+
**Suggested fix:** ...
|
|
104
|
+
**Resolution:**
|
|
105
|
+
|
|
106
|
+
Identifiers are sequential within the ledger, one past the highest present, never reused
|
|
107
|
+
and never renumbered while their entries live there. Completion archives resolved entries
|
|
108
|
+
under a work-item prefix, and that prefixed form is the permanent reference.
|
|
109
|
+
|
|
110
|
+
| Status | Meaning | Blocks completion at P0/P1 |
|
|
111
|
+
| --- | --- | --- |
|
|
112
|
+
| `unverified` | Suspected, no confirming evidence yet | No |
|
|
113
|
+
| `open` | Confirmed, not yet repaired | Yes |
|
|
114
|
+
| `fixed` | Repaired, not yet re-reviewed | Yes |
|
|
115
|
+
| `closed` | Repaired and re-reviewed against the new code | No |
|
|
116
|
+
| `accepted` | Not fixing, by the user's explicit decision, reason recorded | No |
|
|
117
|
+
| `invalid` | Re-examination proved it wrong, evidence recorded | No |
|
|
118
|
+
|
|
119
|
+
After reviewing:
|
|
120
|
+
|
|
121
|
+
- Append each new confirmed finding as `open`.
|
|
122
|
+
- Record a lead worth tracking as `unverified`. It never gates anything.
|
|
123
|
+
- Update entries this pass re-examined, noting the evidence in **Resolution**.
|
|
124
|
+
- Move `fixed` to `closed` only when all three hold: this pass covered the finding's file,
|
|
125
|
+
re-examining the repaired code confirmed the defect is gone and nothing worse replaced
|
|
126
|
+
it, and the report names it as closed. An unrelated new problem in the same file gets its
|
|
127
|
+
own entry. Never close implicitly.
|
|
128
|
+
- Set `accepted` only on the user's explicit decision, with their reason. Never on their
|
|
129
|
+
behalf.
|
|
130
|
+
- Set `invalid` only when re-examination shows the finding was wrong, with that evidence.
|
|
131
|
+
It is a review verdict, never a shortcut past a gate.
|
|
132
|
+
|
|
133
|
+
`fixed` blocking completion is deliberate: a repair is done when a review has looked at the
|
|
134
|
+
result, not when the code changed.
|
|
135
|
+
|
|
136
|
+
## Step 5 - report
|
|
137
|
+
|
|
138
|
+
Findings first, ordered by severity, using the identifiers just assigned.
|
|
139
|
+
|
|
140
|
+
Severity: **P0** data loss, a security break, or code that cannot ship. **P1** a likely bug,
|
|
141
|
+
a broken contract, a missing guard. **P2** a maintainability problem worth fixing before
|
|
142
|
+
the work closes. **P3** a small cleanup or follow-up.
|
|
143
|
+
|
|
144
|
+
P0 and P1 require a concrete code path, a violated contract or boundary, a failing command,
|
|
145
|
+
or reproducible behavior. Incomplete evidence goes under **Unverified risks** with what is
|
|
146
|
+
missing, never presented as a confirmed high-severity finding.
|
|
147
|
+
|
|
148
|
+
Then report: ledger changes by identifier; commands run and their results; the scope and
|
|
149
|
+
lens chosen; the commit range for `current`; the paths reviewed and excluded; checks that
|
|
150
|
+
could not run; and a suggested repair order.
|
|
151
|
+
|
|
152
|
+
A focused lens is not a broad review. Say what was not reviewed, and never imply the
|
|
153
|
+
omitted lenses passed. For `full`, say whether coverage was complete or partial.
|
|
154
|
+
|
|
155
|
+
## Rules
|
|
156
|
+
|
|
157
|
+
- The ledger is the only file this skill writes.
|
|
158
|
+
- The ledger reports status; it never defines what the review looks at.
|
|
159
|
+
- Never reproduce a secret or sensitive value.
|
|
160
|
+
- Ground every finding in a file and line where possible.
|
|
161
|
+
- Recommend the smallest fix that removes the risk, not a rewrite.
|
|
162
|
+
- Respect the project's existing patterns over generic advice.
|
|
163
|
+
- The goal is code that is understandable, consistent, tested where it matters, and safe to
|
|
164
|
+
keep building on. Not perfection.
|
|
165
|
+
|
|
166
|
+
## Formatting
|
|
167
|
+
|
|
168
|
+
Match the conventions in `religion/context/ai-interaction.md`: concise, scannable
|
|
169
|
+
markdown, lists for enumerations and tables for matrices rather than dense paragraphs.
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: auto
|
|
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. Use only when the user runs /auto or explicitly asks for an unattended run."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# auto - the same loop, without the pauses
|
|
8
|
+
|
|
9
|
+
Explicit opt-in only. Never suggest this as a next action, and never fall into it because
|
|
10
|
+
several items are queued.
|
|
11
|
+
|
|
12
|
+
Same skills, same gates, same evidence. The only difference is that it does not stop
|
|
13
|
+
between steps.
|
|
14
|
+
|
|
15
|
+
## Bounds
|
|
16
|
+
|
|
17
|
+
- `/auto` - one work item, stopping **before** completing it, with a review packet.
|
|
18
|
+
- `/auto all` - the remaining build plan, completing each item, until it runs out or hits
|
|
19
|
+
a bound.
|
|
20
|
+
- `/auto 3` - the next three items, completing each.
|
|
21
|
+
- `/auto resume` - continue an interrupted run from the file-backed state.
|
|
22
|
+
|
|
23
|
+
`auto.maxItems` caps successful completions. `auto.maxRepairAttempts` caps repeated
|
|
24
|
+
attempts at the same finding. `auto.finalAudit` adds one review across everything the run
|
|
25
|
+
produced.
|
|
26
|
+
|
|
27
|
+
## What the invocation grants
|
|
28
|
+
|
|
29
|
+
Running this authorizes, for this run only: committing, installing dependencies, and
|
|
30
|
+
network reads. That is the second authority tier, and the invocation is the approval.
|
|
31
|
+
|
|
32
|
+
It grants **nothing** in the first tier. Merging, pushing, deploying, publishing, deleting
|
|
33
|
+
data, and rewriting history each still stop and ask, every time, no matter how many items
|
|
34
|
+
remain.
|
|
35
|
+
|
|
36
|
+
Under `git.mode: trunk` there is no merge, so a run completes items and keeps going. Under
|
|
37
|
+
`branch-per-item` it stops once per item to ask. That is not a flaw in the mode; landing
|
|
38
|
+
work on a shared branch is a decision, and it stays one.
|
|
39
|
+
|
|
40
|
+
## Step 1 - preflight once
|
|
41
|
+
|
|
42
|
+
Before the first item:
|
|
43
|
+
|
|
44
|
+
- Configuration is valid. Stop and point at /doctor if not.
|
|
45
|
+
- The overview is fresh, or regenerate it.
|
|
46
|
+
- No open question blocks the queued items. One that does stops the run **before** any work
|
|
47
|
+
starts, naming the question, since a run that stops halfway through item four is worse
|
|
48
|
+
than one that never began.
|
|
49
|
+
- The working tree is clean, or the only dirt belongs to work being resumed.
|
|
50
|
+
- The plan has unchecked items.
|
|
51
|
+
|
|
52
|
+
State the bounds, the gates in force, and how many items are in range. Then start.
|
|
53
|
+
|
|
54
|
+
## Step 2 - each item
|
|
55
|
+
|
|
56
|
+
For every item, in plan order:
|
|
57
|
+
|
|
58
|
+
1. **Spec it**, following /feature, including the sizing and the self-critique. Do
|
|
59
|
+
not skip the critique because nobody is reading: it is what catches an oversized step
|
|
60
|
+
before it becomes an unreviewable diff.
|
|
61
|
+
2. **Implement it**, following /implement, with no prompt between steps. Verify each
|
|
62
|
+
step against what it touched.
|
|
63
|
+
3. **Apply the gates** from `qualityGates`, then run the full `Verify`.
|
|
64
|
+
4. **Repair confirmed findings** at P0 and P1, within this item's scope, then re-review them
|
|
65
|
+
in a subagent with fresh context. Give up after `auto.maxRepairAttempts` and stop with
|
|
66
|
+
the finding recorded rather than trying variations.
|
|
67
|
+
5. **Complete it**, following /complete, which archives, ticks the plan, prunes the
|
|
68
|
+
ledger, and commits. Ask before any merge.
|
|
69
|
+
6. **Report one line** and move on.
|
|
70
|
+
|
|
71
|
+
## Step 3 - stop
|
|
72
|
+
|
|
73
|
+
Stop immediately, keeping all state intact, when any of these happens:
|
|
74
|
+
|
|
75
|
+
- a check fails and two repair attempts do not fix it
|
|
76
|
+
- a product decision is needed that the plans do not answer
|
|
77
|
+
- a finding cannot be repaired within the item's scope
|
|
78
|
+
- work would touch anything in the first authority tier
|
|
79
|
+
- an item turns out to need splitting in a way that changes the plan
|
|
80
|
+
- a bound is reached
|
|
81
|
+
- the same failure appears twice in a row across different items, which means something
|
|
82
|
+
systemic and further items will not fix it
|
|
83
|
+
|
|
84
|
+
A stopped run leaves the branch, the spec, and the ticked steps exactly as they are.
|
|
85
|
+
`/auto resume` picks up from there, because the state is in files rather than in the run.
|
|
86
|
+
|
|
87
|
+
## Step 4 - report
|
|
88
|
+
|
|
89
|
+
- items completed, by name, and what each delivered
|
|
90
|
+
- what stopped the run, exactly, and the state it stopped in
|
|
91
|
+
- findings raised, repaired, and still open
|
|
92
|
+
- checks run, and any that could not run
|
|
93
|
+
- the resume command, when one applies
|
|
94
|
+
|
|
95
|
+
Never report an item as complete when its gate did not pass. An unattended run that
|
|
96
|
+
overstates what it did is worse than one that stopped early, because nobody was watching
|
|
97
|
+
the part it got wrong.
|
|
98
|
+
|
|
99
|
+
## Rules
|
|
100
|
+
|
|
101
|
+
- Explicit invocation only.
|
|
102
|
+
- The gates are the same gates. Unattended is not a reason to lower one.
|
|
103
|
+
- Never merge, push, deploy, publish, or delete without asking, however long the queue is.
|
|
104
|
+
- Never widen an item's scope to make its gate pass.
|
|
105
|
+
- Stop on ambiguity. There is nobody to ask mid-run, so a guess compounds silently.
|
|
106
|
+
|
|
107
|
+
## Formatting
|
|
108
|
+
|
|
109
|
+
Match the conventions in `religion/context/ai-interaction.md`: concise, scannable
|
|
110
|
+
markdown, lists for enumerations and tables for matrices rather than dense paragraphs.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: browser-tests
|
|
3
|
+
summary: set up a repeatable browser test harness and record its command
|
|
4
|
+
description: "Add or normalize a repeatable browser test harness, reusing an existing runner where there is one and otherwise preferring Playwright for web and browser-extension projects. Adds one project-relevant smoke test, records the command in the entry file, and proves it runs. Distinct from live browser evidence during a check: this is regression coverage that runs unattended and for other people. Use when the user runs /browser-tests, asks to add browser or end-to-end tests, or asks to make browser behavior repeatable."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# browser-tests - repeatable browser coverage
|
|
8
|
+
|
|
9
|
+
/check drives a real browser to prove one work item behaves. This sets up a harness
|
|
10
|
+
that keeps proving it, unattended, for everyone.
|
|
11
|
+
|
|
12
|
+
Different jobs. Live browser evidence answers "does this work now", with no setup and full
|
|
13
|
+
fidelity. A harness answers "did we break it", forever, and runs where nobody is watching.
|
|
14
|
+
A project can want either, both, or neither.
|
|
15
|
+
|
|
16
|
+
## Step 1 - look first
|
|
17
|
+
|
|
18
|
+
Reuse a compatible runner if one exists. If not, prefer Playwright for web and
|
|
19
|
+
browser-extension projects: it installs its own browsers, runs headless, and is the
|
|
20
|
+
ecosystem default.
|
|
21
|
+
|
|
22
|
+
Say what you propose, including that it downloads browser binaries, before installing.
|
|
23
|
+
|
|
24
|
+
## Step 2 - set it up minimally
|
|
25
|
+
|
|
26
|
+
Install it, add the configuration, and write **one** smoke test that exercises something
|
|
27
|
+
this project actually does. Not a test that loads a page and asserts the title: a test that
|
|
28
|
+
would fail if the project's main path broke.
|
|
29
|
+
|
|
30
|
+
Keep the configuration small. Base URL, one browser, a way to start the project. Sharding,
|
|
31
|
+
matrices, and visual snapshots are later choices, and adding them now means maintaining
|
|
32
|
+
them from a position of no evidence that they help.
|
|
33
|
+
|
|
34
|
+
## Step 3 - record the command
|
|
35
|
+
|
|
36
|
+
Add it to the Commands section of the entry file as `Browser tests`.
|
|
37
|
+
|
|
38
|
+
Once declared, specs can include focused browser coverage for stable behavioral outcomes,
|
|
39
|
+
and checks can run it as one evidence source. It does not prove visual fidelity, real
|
|
40
|
+
signed-in behavior, or browser chrome, and must never be described as though it did.
|
|
41
|
+
|
|
42
|
+
## Step 4 - prove it
|
|
43
|
+
|
|
44
|
+
Run the command and show the output. Then break the assertion and show it failing, so the
|
|
45
|
+
harness is known to be wired to the project rather than passing vacuously.
|
|
46
|
+
|
|
47
|
+
## Step 5 - report
|
|
48
|
+
|
|
49
|
+
What was installed, the exact command, what the smoke test covers, and what it does not.
|
|
50
|
+
|
|
51
|
+
Say explicitly that this is **not** added to `Verify` or to continuous integration unless
|
|
52
|
+
the user asks. Browser tests are slow and flakier than unit tests; putting them in the
|
|
53
|
+
default gate is a real cost and should be a decision, not a side effect.
|
|
54
|
+
|
|
55
|
+
## Rules
|
|
56
|
+
|
|
57
|
+
- One harness per project. Reuse before installing.
|
|
58
|
+
- One smoke test, not a suite. Coverage grows with the work that needs it.
|
|
59
|
+
- Never claim the harness proves something it does not observe.
|
|
60
|
+
- Not in `Verify` or continuous integration without an explicit yes.
|
|
61
|
+
|
|
62
|
+
## Formatting
|
|
63
|
+
|
|
64
|
+
Match the conventions in `religion/context/ai-interaction.md`: concise, scannable
|
|
65
|
+
markdown, lists for enumerations and tables for matrices rather than dense paragraphs.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: check
|
|
3
|
+
summary: prove the current work does what its spec says, against the running project
|
|
4
|
+
description: "Prove the current work actually does what its spec says by running the real project and observing behavior against each stated outcome. Picks its evidence from what the project is: a live browser for web work, captured command output for a CLI, request and response for an API, plus any configured test harness. Reports pass or fail per outcome with the evidence that decided it. Never edits source, never commits; fixing belongs to /implement. Use when the user runs /check, asks to confirm the work behaves correctly, wants proof before completing, or wants a change checked in the running project rather than only in the build."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# check - prove the work against the running project
|
|
8
|
+
|
|
9
|
+
Where this sits:
|
|
10
|
+
|
|
11
|
+
implement -> [check] -> complete
|
|
12
|
+
(built it) (prove it) (close it out)
|
|
13
|
+
|
|
14
|
+
The build passing means the code compiles. This skill answers a different question: does it
|
|
15
|
+
actually do what the spec said it would. Those are not the same question, and only one of
|
|
16
|
+
them is what the user asked for.
|
|
17
|
+
|
|
18
|
+
It observes. It never edits source, installs anything, commits, or fixes what it finds.
|
|
19
|
+
|
|
20
|
+
## Step 1 - read what must be true
|
|
21
|
+
|
|
22
|
+
Read `religion/context/current-work.md` and take the stated outcome from every build step,
|
|
23
|
+
plus anything in the Goal and Testing sections that makes a claim about behavior. Those
|
|
24
|
+
outcomes are the checklist. Nothing else is in scope.
|
|
25
|
+
|
|
26
|
+
If the spec is still the stub, say so and stop.
|
|
27
|
+
|
|
28
|
+
## Step 2 - pick the evidence
|
|
29
|
+
|
|
30
|
+
Choose by what the project actually is. Never assume a harness exists, and never install one.
|
|
31
|
+
|
|
32
|
+
| Project shape | Evidence |
|
|
33
|
+
| --- | --- |
|
|
34
|
+
| Web interface | Drive a real browser: navigate, interact, screenshot each outcome, and read the console and network for errors the page does not show |
|
|
35
|
+
| Command line tool | Run the real command with real arguments and capture stdout, stderr, and exit status |
|
|
36
|
+
| Service or API | Issue real requests and record status, headers, and body |
|
|
37
|
+
| Library | Exercise the public interface the way a consumer would, not through internals |
|
|
38
|
+
| Background work | Trigger it and observe its effect, not just that it was scheduled |
|
|
39
|
+
|
|
40
|
+
When the entry file declares a browser test command, run it too, as one source among
|
|
41
|
+
several. Do not treat it as proof of visual fidelity, real signed-in behavior, browser
|
|
42
|
+
chrome, or anything else it does not actually observe.
|
|
43
|
+
|
|
44
|
+
Start the project the way its own commands say to. If it cannot start, that is the finding:
|
|
45
|
+
report it and stop rather than reasoning about what would have happened.
|
|
46
|
+
|
|
47
|
+
## Step 3 - check each outcome
|
|
48
|
+
|
|
49
|
+
For each one, state what you did, what you observed, and whether it matched.
|
|
50
|
+
|
|
51
|
+
- **Pass** needs observed behavior. Not a passing build, not code that looks correct, not
|
|
52
|
+
a plausible argument.
|
|
53
|
+
- **Fail** names what happened instead, with the evidence.
|
|
54
|
+
- **Could not check** is its own result, with the reason. It is never a pass. A required
|
|
55
|
+
outcome that cannot be checked is a blocker.
|
|
56
|
+
|
|
57
|
+
Check the unhappy paths the spec named: empty and malformed input, the error and empty
|
|
58
|
+
states, the first-run case. A feature that works only on the happy path is not done, and
|
|
59
|
+
this is where that gets caught rather than after it ships.
|
|
60
|
+
|
|
61
|
+
## Step 4 - report
|
|
62
|
+
|
|
63
|
+
Lead with the verdict, then the evidence.
|
|
64
|
+
|
|
65
|
+
- each outcome, with pass, fail, or could not check, and what proved it
|
|
66
|
+
- what was run, exactly
|
|
67
|
+
- anything observed that the spec did not ask about but that looks wrong
|
|
68
|
+
- next action: /implement when something failed, /complete when everything
|
|
69
|
+
passed
|
|
70
|
+
|
|
71
|
+
Never say passed, verified, or working without naming the command, route, screenshot, or
|
|
72
|
+
output behind it.
|
|
73
|
+
|
|
74
|
+
## Rules
|
|
75
|
+
|
|
76
|
+
- Observe, never repair. A failure is reported, not fixed.
|
|
77
|
+
- Never install a runner, a browser, or a dependency to make a check possible. Report the
|
|
78
|
+
gap.
|
|
79
|
+
- Do not widen scope beyond the spec's stated outcomes, except to report something clearly
|
|
80
|
+
broken that you happened to see.
|
|
81
|
+
- A check that could not run is a blocker, never a pass.
|
|
82
|
+
|
|
83
|
+
## Formatting
|
|
84
|
+
|
|
85
|
+
Match the conventions in `religion/context/ai-interaction.md`: concise, scannable
|
|
86
|
+
markdown, lists for enumerations and tables for matrices rather than dense paragraphs.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ci
|
|
3
|
+
summary: define one Verify command and the GitHub workflow that runs it
|
|
4
|
+
description: "Set up automatic checks around one documented Verify command. Detects the real stack, package manager, default branch, and existing workflows; combines only the checks the project actually has into one command; records it in the entry file; creates .github/workflows/verify.yml when that does not overwrite existing continuous integration; runs the command locally; and stops before pushing or changing any remote setting. Use when the user runs /ci, asks to add continuous integration, GitHub Actions, or pull-request checks."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# ci - one command, run automatically
|
|
8
|
+
|
|
9
|
+
The mental model, in three parts:
|
|
10
|
+
|
|
11
|
+
- **Verify is the recipe.** One local command running the checks this project already has,
|
|
12
|
+
in order: typecheck, then tests, then build.
|
|
13
|
+
- **The workflow is the worker.** It runs that same command on pull requests and on the
|
|
14
|
+
default branch.
|
|
15
|
+
- **A branch rule is the lock.** Requiring the check before merge is a remote setting, and
|
|
16
|
+
a separate decision this skill does not make.
|
|
17
|
+
|
|
18
|
+
The recipe turns nothing on by magic. A project with typechecking and a build but no test
|
|
19
|
+
runner gets a Verify command with two parts, and gains the third when /tests adds a
|
|
20
|
+
runner.
|
|
21
|
+
|
|
22
|
+
## Step 1 - detect
|
|
23
|
+
|
|
24
|
+
The stack and runtime version, the package manager and its install command, the checks that
|
|
25
|
+
actually exist, the default branch, and any workflows already present.
|
|
26
|
+
|
|
27
|
+
Never assume. A `test` script that runs `echo "no tests"` is not a test command, and
|
|
28
|
+
treating it as one produces a green check that means nothing.
|
|
29
|
+
|
|
30
|
+
## Step 2 - define Verify
|
|
31
|
+
|
|
32
|
+
Combine only checks that exist, in order: typecheck, tests, build. Never invent one to fill
|
|
33
|
+
the recipe.
|
|
34
|
+
|
|
35
|
+
For a JavaScript or TypeScript project, prefer a package script named `verify` using the
|
|
36
|
+
detected package manager. For other stacks, use the native task runner or the exact
|
|
37
|
+
combined command.
|
|
38
|
+
|
|
39
|
+
Record it in the Commands section of the entry file as `Verify`. That is what
|
|
40
|
+
implementation and completion will run, so it has to be exactly right.
|
|
41
|
+
|
|
42
|
+
## Step 3 - the workflow
|
|
43
|
+
|
|
44
|
+
Write `.github/workflows/verify.yml` running that same command on pull requests and on
|
|
45
|
+
pushes to the default branch.
|
|
46
|
+
|
|
47
|
+
- Use the project's real runtime version and install command.
|
|
48
|
+
- Grant `contents: read` and nothing more.
|
|
49
|
+
- Cache the package manager's store if that is straightforward.
|
|
50
|
+
|
|
51
|
+
**Never overwrite existing continuous integration.** If a workflow already runs these
|
|
52
|
+
checks, say so, show where they overlap, and stop. Two workflows running the same suite
|
|
53
|
+
doubles the cost and halves the trust in both.
|
|
54
|
+
|
|
55
|
+
## Step 4 - run it locally
|
|
56
|
+
|
|
57
|
+
Run the Verify command exactly as written. If it fails, the recipe is wrong or the project
|
|
58
|
+
is broken, and either way it must not be committed in that state.
|
|
59
|
+
|
|
60
|
+
## Step 5 - report and stop
|
|
61
|
+
|
|
62
|
+
The command, where it is recorded, the workflow created or the overlap found, the local
|
|
63
|
+
result, and what remains a separate decision.
|
|
64
|
+
|
|
65
|
+
Stop before pushing. Requiring the check in the repository's settings is a remote change
|
|
66
|
+
and needs its own yes, on top of the push.
|
|
67
|
+
|
|
68
|
+
## Rules
|
|
69
|
+
|
|
70
|
+
- Only real checks go in Verify.
|
|
71
|
+
- Never overwrite an existing workflow.
|
|
72
|
+
- No git hooks, coverage thresholds, browser tests, security scanners, or version matrices.
|
|
73
|
+
Those are later choices, made deliberately.
|
|
74
|
+
- Do not push, and do not change any remote setting.
|
|
75
|
+
|
|
76
|
+
## Formatting
|
|
77
|
+
|
|
78
|
+
Match the conventions in `religion/context/ai-interaction.md`: concise, scannable
|
|
79
|
+
markdown, lists for enumerations and tables for matrices rather than dense paragraphs.
|