create-religion 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +47 -0
  3. package/dist/bin/religion.js +209 -0
  4. package/dist/lib/dashboard.js +123 -0
  5. package/dist/lib/doctor.js +164 -0
  6. package/dist/lib/install.js +170 -0
  7. package/dist/lib/paths.js +40 -0
  8. package/dist/lib/state.js +117 -0
  9. package/dist/lib/status.js +88 -0
  10. package/package.json +40 -0
  11. package/template/.agents/skills/audit/SKILL.md +169 -0
  12. package/template/.agents/skills/auto/SKILL.md +110 -0
  13. package/template/.agents/skills/browser-tests/SKILL.md +65 -0
  14. package/template/.agents/skills/check/SKILL.md +86 -0
  15. package/template/.agents/skills/ci/SKILL.md +79 -0
  16. package/template/.agents/skills/complete/SKILL.md +184 -0
  17. package/template/.agents/skills/debug/SKILL.md +72 -0
  18. package/template/.agents/skills/discovery/SKILL.md +83 -0
  19. package/template/.agents/skills/distill/SKILL.md +95 -0
  20. package/template/.agents/skills/doctor/SKILL.md +65 -0
  21. package/template/.agents/skills/extend/SKILL.md +102 -0
  22. package/template/.agents/skills/feature/SKILL.md +172 -0
  23. package/template/.agents/skills/feature/reference/spec-template.md +67 -0
  24. package/template/.agents/skills/fix/SKILL.md +76 -0
  25. package/template/.agents/skills/implement/SKILL.md +174 -0
  26. package/template/.agents/skills/overview/SKILL.md +150 -0
  27. package/template/.agents/skills/overview/reference/project-overview-template.md +101 -0
  28. package/template/.agents/skills/prototype/SKILL.md +90 -0
  29. package/template/.agents/skills/release/SKILL.md +88 -0
  30. package/template/.agents/skills/rollback/SKILL.md +114 -0
  31. package/template/.agents/skills/setup/SKILL.md +105 -0
  32. package/template/.agents/skills/status/SKILL.md +63 -0
  33. package/template/.agents/skills/tests/SKILL.md +90 -0
  34. package/template/.agents/skills/try/SKILL.md +59 -0
  35. package/template/.claude/hooks/guard-rendered-output.mjs +49 -0
  36. package/template/.claude/hooks/guard-tier-one.mjs +63 -0
  37. package/template/.claude/hooks/write-handoff.mjs +83 -0
  38. package/template/.claude/skills/audit/SKILL.md +169 -0
  39. package/template/.claude/skills/auto/SKILL.md +110 -0
  40. package/template/.claude/skills/browser-tests/SKILL.md +65 -0
  41. package/template/.claude/skills/check/SKILL.md +86 -0
  42. package/template/.claude/skills/ci/SKILL.md +79 -0
  43. package/template/.claude/skills/complete/SKILL.md +184 -0
  44. package/template/.claude/skills/debug/SKILL.md +72 -0
  45. package/template/.claude/skills/discovery/SKILL.md +83 -0
  46. package/template/.claude/skills/distill/SKILL.md +95 -0
  47. package/template/.claude/skills/doctor/SKILL.md +65 -0
  48. package/template/.claude/skills/extend/SKILL.md +102 -0
  49. package/template/.claude/skills/feature/SKILL.md +172 -0
  50. package/template/.claude/skills/feature/reference/spec-template.md +67 -0
  51. package/template/.claude/skills/fix/SKILL.md +76 -0
  52. package/template/.claude/skills/implement/SKILL.md +174 -0
  53. package/template/.claude/skills/overview/SKILL.md +150 -0
  54. package/template/.claude/skills/overview/reference/project-overview-template.md +101 -0
  55. package/template/.claude/skills/prototype/SKILL.md +90 -0
  56. package/template/.claude/skills/release/SKILL.md +88 -0
  57. package/template/.claude/skills/rollback/SKILL.md +114 -0
  58. package/template/.claude/skills/setup/SKILL.md +105 -0
  59. package/template/.claude/skills/status/SKILL.md +63 -0
  60. package/template/.claude/skills/tests/SKILL.md +90 -0
  61. package/template/.claude/skills/try/SKILL.md +59 -0
  62. package/template/AGENTS.md +206 -0
  63. package/template/CLAUDE.md +175 -0
  64. package/template/religion/.state/README.md +10 -0
  65. package/template/religion/.state/settings-template.json +19 -0
  66. package/template/religion/build-plan.md +43 -0
  67. package/template/religion/config.json +26 -0
  68. package/template/religion/context/ai-interaction.md +84 -0
  69. package/template/religion/context/coding-standards.md +77 -0
  70. package/template/religion/context/current-work.md +8 -0
  71. package/template/religion/context/findings.md +9 -0
  72. package/template/religion/context/handoff.md +8 -0
  73. package/template/religion/context/project-overview.md +8 -0
  74. package/template/religion/history/features/README.md +8 -0
  75. package/template/religion/history/fixes/README.md +6 -0
  76. package/template/religion/history/rollbacks/README.md +7 -0
  77. package/template/religion/learning/journal.md +7 -0
  78. package/template/religion/learning/lessons.md +8 -0
  79. package/template/religion/project-plan.md +49 -0
  80. package/template/religion/reference/README.md +7 -0
@@ -0,0 +1,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.