@oneie/claude 0.3.1 → 0.4.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/agents/w1-recon.md +9 -2
- package/agents/w2-decide.md +40 -9
- package/agents/w3-edit.md +34 -4
- package/agents/w4-verify.md +112 -15
- package/commands/do-autonomous.md +1 -1
- package/commands/do.md +84 -46
- package/commands/skill-create.md +4 -4
- package/commands/sync.md +7 -7
- package/hooks/hooks.json +14 -0
- package/hooks/scripts/compact-hint.sh +36 -0
- package/hooks/scripts/config-protect.sh +56 -0
- package/hooks/scripts/stop-reflect.sh +3 -3
- package/hooks/scripts/sync-todo-docs.sh +1 -1
- package/package.json +2 -1
- package/rules/documentation.md +18 -18
- package/rules/engine.md +2 -2
- package/scripts/do-auto.sh +5 -5
- package/scripts/do-folder.sh +1 -1
- package/scripts/do-prove.sh +10 -27
- package/scripts/do-reconcile.sh +212 -19
- package/scripts/do-smoke.sh +65 -25
- package/scripts/do-survey.sh +1 -1
- package/scripts/do-tier.sh +1 -1
- package/scripts/w4-rubric.ts +1 -1
- package/skills/oneie/SKILL.md +4 -4
- package/skills/signal/SKILL.md +2 -2
- package/skills/sui/SKILL.md +1 -1
- package/templates/template-agent.md +50 -0
- package/templates/template-feature.md +27 -0
- package/templates/template-plan.md +75 -0
- package/templates/template-teach.md +59 -0
- package/templates/template-tests.md +43 -0
- package/templates/template-todo.md +781 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
TEMPLATE — DESIGN PHASE. Copy to text/<slug>-plan.md, fill, delete this comment.
|
|
3
|
+
Owner: Opus · high (the decider — never delegated). Skills: typedb, signal where the
|
|
4
|
+
substrate is touched. This is the DESIGN phase of /do (see text/do-refined.md).
|
|
5
|
+
Runs AFTER PROMISE (text/<slug>.md) and SURVEY, BEFORE the plan (text/<slug>-todo.md).
|
|
6
|
+
-->
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
title: {Human-readable title}
|
|
10
|
+
slug: {kebab-slug}
|
|
11
|
+
type: plan
|
|
12
|
+
tier: {trivial | simple | complex}
|
|
13
|
+
source_of_truth:
|
|
14
|
+
- text/{feature}.md # the promise this design must keep
|
|
15
|
+
- text/dictionary-plan.md # canonical names — reconcile against this
|
|
16
|
+
- schema/one.tql # only if the substrate is touched
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# {Title}
|
|
20
|
+
|
|
21
|
+
## The promise (from FRAME)
|
|
22
|
+
|
|
23
|
+
{One line, copied from text/<feature>.md — the design exists to keep this promise.}
|
|
24
|
+
|
|
25
|
+
## Reuse verdict (from SURVEY)
|
|
26
|
+
|
|
27
|
+
{expose | extend | build | drop} — {what already exists, what the real gap is. Only the gap gets designed.}
|
|
28
|
+
|
|
29
|
+
## Design
|
|
30
|
+
|
|
31
|
+
### Data shape
|
|
32
|
+
{What extends the existing schema. Reuse relations; add the minimum field. NEVER a parallel model.}
|
|
33
|
+
|
|
34
|
+
### Types
|
|
35
|
+
{Flow from the schema. No hand-maintained second copy.}
|
|
36
|
+
|
|
37
|
+
### API
|
|
38
|
+
{Which existing route family this joins. New route only if SURVEY said `build`.}
|
|
39
|
+
|
|
40
|
+
### UI
|
|
41
|
+
{Which existing components / pages / navigation this composes. Empty / loading / error / edge states named here, not deferred to BUILD.}
|
|
42
|
+
|
|
43
|
+
## Substrate reconciliation (gate — zero new core concepts without justification)
|
|
44
|
+
|
|
45
|
+
- [ ] Names exist in `dictionary.md` (no dead names)
|
|
46
|
+
- [ ] No new dimension / verb / type — or one-sentence justification: {…}
|
|
47
|
+
- [ ] No locked-rule break (6 dims, 6 verbs, 3 rules)
|
|
48
|
+
|
|
49
|
+
## Pre-mortem (assume it shipped and failed — why?)
|
|
50
|
+
|
|
51
|
+
{Red-team the design. Walk every boundary. Name the assumptions that, if wrong, sink it.
|
|
52
|
+
Each failure mode below becomes a test in the todo's demo gate.}
|
|
53
|
+
|
|
54
|
+
| Failure mode | Likelihood | Becomes test |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| {how it could break} | {low/med/high} | {the assertion that catches it} |
|
|
57
|
+
|
|
58
|
+
## Decisions (this, not that, because)
|
|
59
|
+
|
|
60
|
+
{Every non-obvious choice gets one line. Favour boring, proven shapes over clever ones.
|
|
61
|
+
A decision nobody wrote down is one the next person re-litigates.}
|
|
62
|
+
|
|
63
|
+
- **{choice}** over **{alternative}** — because {reason}.
|
|
64
|
+
|
|
65
|
+
## Clarifications (CLARIFY gate — features/schema only)
|
|
66
|
+
|
|
67
|
+
{≤5 high-impact ambiguity questions and their answers, written here at design time.
|
|
68
|
+
NOT a second human gate — INTAKE is the one front-door checkpoint. This is decision capture.}
|
|
69
|
+
|
|
70
|
+
- **Q:** {scope / data-model / edge-case / naming question}
|
|
71
|
+
**A:** {the decision}
|
|
72
|
+
|
|
73
|
+
## Out of scope
|
|
74
|
+
|
|
75
|
+
{What this explicitly does NOT do — the boundary that keeps the todo honest.}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: {{slug}}
|
|
3
|
+
written: {{YYYY-MM-DD}}
|
|
4
|
+
proven: true
|
|
5
|
+
promise: text/{{slug}}.md
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# {{Feature Name}}
|
|
9
|
+
|
|
10
|
+
> Written after PROVE passes. Describes behavior that exists, not behavior that is planned.
|
|
11
|
+
> The promise (`text/{{slug}}.md`) is what this doc must match.
|
|
12
|
+
|
|
13
|
+
## What it does
|
|
14
|
+
|
|
15
|
+
{{1–3 sentences. What the user/operator gets. Every claim here must be in the proven behavior.}}
|
|
16
|
+
|
|
17
|
+
## How to use it
|
|
18
|
+
|
|
19
|
+
{{The golden path. Step-by-step. Present tense. Tested commands only.}}
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Example — copy-pasteable, verified to work
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Reference
|
|
26
|
+
|
|
27
|
+
| Concept | Where |
|
|
28
|
+
|---------|-------|
|
|
29
|
+
| {{name}} | {{`file:line` or section link}} |
|
|
30
|
+
| Script | `.claude/scripts/{{relevant-script}}.sh` |
|
|
31
|
+
| Template | `text/template-{{template}}.md` |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Runbook
|
|
36
|
+
|
|
37
|
+
### Verify it's working
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# The proof command from the PROVE step — still valid as a health check
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Common issues
|
|
44
|
+
|
|
45
|
+
| Symptom | Cause | Fix |
|
|
46
|
+
|---------|-------|-----|
|
|
47
|
+
| {{symptom}} | {{cause}} | {{fix}} |
|
|
48
|
+
|
|
49
|
+
### Rollback
|
|
50
|
+
|
|
51
|
+
{{What to undo if this needs to be reverted. Specific commands, not vague guidance.}}
|
|
52
|
+
|
|
53
|
+
<!--
|
|
54
|
+
TEACH stop rules (from do.md):
|
|
55
|
+
- Write AFTER PROVE passes (proven: true in frontmatter marks this)
|
|
56
|
+
- Match the promise: every user-facing claim must appear in text/{{slug}}.md
|
|
57
|
+
- Doc + runbook in one file; presence check is: test -f text/{{slug}}-doc.md
|
|
58
|
+
- do-reconcile.sh dictionary on this file before committing (no dead names)
|
|
59
|
+
-->
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: {{slug}}
|
|
3
|
+
surface: {{frontend|api|backend|substrate}}
|
|
4
|
+
cycle: {{C1}}
|
|
5
|
+
folder: {{one.ie/web|packages/sdk|channels}}
|
|
6
|
+
deliverables:
|
|
7
|
+
- {{D1 — what it asserts}}
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Tests — {{slug}} · {{cycle}}
|
|
11
|
+
|
|
12
|
+
> One `expect()` per deliverable — assert the destination, not the path.
|
|
13
|
+
> Run: `bun run verify` in `{{folder}}/`
|
|
14
|
+
> Written first (before W3 edits land), verified at W4.
|
|
15
|
+
|
|
16
|
+
## {{D1 — user-facing outcome}}
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import { describe, it, expect } from 'vitest'
|
|
20
|
+
// import { {{thing}} } from '{{path}}'
|
|
21
|
+
|
|
22
|
+
describe('{{slug}} · {{deliverable}}', () => {
|
|
23
|
+
it('{{outcome a user would care about}}', async () => {
|
|
24
|
+
// arrange
|
|
25
|
+
// const input = ...
|
|
26
|
+
|
|
27
|
+
// act
|
|
28
|
+
// const result = await ...
|
|
29
|
+
|
|
30
|
+
// assert
|
|
31
|
+
// expect(result).toBe(...)
|
|
32
|
+
})
|
|
33
|
+
})
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
<!--
|
|
37
|
+
Rules (from do.md testing policy):
|
|
38
|
+
- ≤1 test file per cycle
|
|
39
|
+
- Goal-based: assert shipped outcome, not implementation detail
|
|
40
|
+
- Vitest-first; add requires_playwright: true in todo frontmatter if browser needed
|
|
41
|
+
- N-variant split-test → winner mark(), losers warn(0.5)
|
|
42
|
+
- One import per test file (avoid cross-cycle coupling)
|
|
43
|
+
-->
|