@ancleto/spec 0.6.24 → 0.6.26
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/README.md +15 -0
- package/agents/coder.md +2 -0
- package/agents/context-resolver.md +2 -0
- package/agents/documenter.md +2 -0
- package/agents/memory-keeper.md +2 -0
- package/agents/orchestrator.md +12 -1
- package/agents/reviewer.md +2 -0
- package/agents/spec-writer.md +2 -0
- package/agents/technical-discovery.md +2 -0
- package/agents/technical-seed-writer.md +7 -2
- package/agents/tester.md +2 -0
- package/package.json +1 -1
- package/skills/ancleto-archive/SKILL.md +17 -4
package/README.md
CHANGED
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
- [Características principales](#características-principales)
|
|
24
24
|
- [Requisitos](#requisitos)
|
|
25
25
|
- [Instalación](#instalación)
|
|
26
|
+
- [Guía de .gitignore](#guía-de-gitignore)
|
|
26
27
|
- [Configuración y tiers de costo](#configuración-y-tiers-de-costo)
|
|
27
28
|
- [Uso rápido](#uso-rápido)
|
|
28
29
|
- [Referencia de comandos CLI](#referencia-de-comandos-cli)
|
|
@@ -121,6 +122,20 @@ Cómo bajarlo:
|
|
|
121
122
|
|
|
122
123
|
---
|
|
123
124
|
|
|
125
|
+
## Guía de .gitignore
|
|
126
|
+
|
|
127
|
+
El framework **no gestiona tu `.gitignore`**: es una decisión del proyecto. Como referencia, esta es la combinación que funciona bien con Ancleto:
|
|
128
|
+
|
|
129
|
+
| Ruta | Recomendación | Por qué |
|
|
130
|
+
|---|---|---|
|
|
131
|
+
| `aspec/` | **Versionar** | Es la fuente-de-verdad: specs y el historial de changes archivados. Si se ignora, el equipo pierde el por qué de las decisiones y los agentes no tienen contexto estable. |
|
|
132
|
+
| `.ancleto/` | **Ignorar** | Base SQLite local (memoria del repo y working-context). Es de tu máquina; cada integrante la regenera. |
|
|
133
|
+
| `.ancletorc` | **Decisión del equipo** | Versionarlo alinea la configuración del proyecto (agente, tier, discovery). Ignoralo si cada integrante lo personaliza. |
|
|
134
|
+
|
|
135
|
+
> Error común: gitignorear `aspec/` junto con `.ancleto/`. La memoria local es descartable; la fuente-de-verdad, no.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
124
139
|
## Configuración y tiers de costo
|
|
125
140
|
|
|
126
141
|
En la primera ejecución, un **wizard interactivo** te guía por los pasos de configuración (agente/IDE y nivel de gasto). También podés pasarlos por flags:
|
package/agents/coder.md
CHANGED
|
@@ -151,6 +151,8 @@ After implementation, return a short structured summary including:
|
|
|
151
151
|
- whether escalation was required due to broader-than-approved impact
|
|
152
152
|
- blockers, conflicts, or escalations if any
|
|
153
153
|
|
|
154
|
+
**Output cap**: summary max 12 lines. At most 5 risky edges or test scenarios; offer the rest on request. Reference code as `file:line` instead of pasting code or logs.
|
|
155
|
+
|
|
154
156
|
## Important
|
|
155
157
|
|
|
156
158
|
- Do NOT add features not defined in the approved request or aspec change
|
|
@@ -93,6 +93,8 @@ Return the card as structured context for the orchestrator:
|
|
|
93
93
|
|
|
94
94
|
The command already replaces HTML markup with whitespace and unwraps long lines; if any markup survives, replace it with whitespace rather than dropping it.
|
|
95
95
|
|
|
96
|
+
**Output cap**: 3 lines plus the card payload — the description and acceptance criteria are the only unbounded fields and must stay complete; no commentary, analysis, or implementation advice.
|
|
97
|
+
|
|
96
98
|
## Failure handling
|
|
97
99
|
|
|
98
100
|
- If no work item reference was provided, report "no work item to resolve" and fetch nothing.
|
package/agents/documenter.md
CHANGED
|
@@ -147,6 +147,8 @@ After completing the finalization step, return a short structured summary includ
|
|
|
147
147
|
- whether the original active change directory was fully removed (`Change Archive` mode)
|
|
148
148
|
- any blockers or missing inputs
|
|
149
149
|
|
|
150
|
+
**Output cap**: summary max 10 lines; spec, archive, and artifact lists as paths only — never restate spec content.
|
|
151
|
+
|
|
150
152
|
## Important
|
|
151
153
|
|
|
152
154
|
- Do not invent additional documentation requirements
|
package/agents/memory-keeper.md
CHANGED
|
@@ -139,6 +139,8 @@ Whoever recalls this in six months has no session to attach it to, so it reads a
|
|
|
139
139
|
- User-Approved Record: the tool used, `memory_key`, the exact approved `content` as stored, and whether it superseded a previous entry
|
|
140
140
|
- Any failure of the memory engine, reported plainly so `@orchestrator` can continue without memory
|
|
141
141
|
|
|
142
|
+
**Output cap**: max 6 lines; the stored entry is the only unbounded field — everything else is one line.
|
|
143
|
+
|
|
142
144
|
## Important
|
|
143
145
|
|
|
144
146
|
- You never modify code, specs, or repository state.
|
package/agents/orchestrator.md
CHANGED
|
@@ -259,7 +259,7 @@ If the runtime is read-only or plan-only:
|
|
|
259
259
|
5. **Testing**: Delegate to **`@tester`** to create or update unit tests and perform final validation against the approved scope, including a non-writing format check and one lint pass after all edits. Include the complete Resolved Context Envelope, the coder's task-owned files, and its reported risks. `@tester` returns the final union of task-owned files and the Validation Ledger. A format failure in a task-owned file is failed verification and must not be fixed silently by `@tester`.
|
|
260
260
|
6. **Review**: Delegate to **`@reviewer`** when an independent correctness or scope review is appropriate. Include the complete Resolved Context Envelope, the tester's final task-owned file union, and the full Validation Ledger.
|
|
261
261
|
7. **🛑 FINAL ARCHIVE CHECKPOINT**: If implementation, validation, and any required review are complete with no blocking issues, stop and explicitly ask the user whether to keep iterating on the same change or finalize and archive it
|
|
262
|
-
8. **Finalization / Archive**: Before archiving, verify the delta specs reflect the final implementation — if iteration changed behavior or scope, re-delegate to **`@spec-writer`** to update the delta specs first, so the merge to source-of-truth is accurate. Then delegate to **`@documenter`** only after explicit user approval to archive
|
|
262
|
+
8. **Finalization / Archive**: Before archiving, verify the delta specs reflect the final implementation — if iteration changed behavior or scope, re-delegate to **`@spec-writer`** to update the delta specs first, so the merge to source-of-truth is accurate. Check the seed freshness before closing: delegate the read-only state check to **`@technical-discovery`** and, when the state is `STALE`, warn and offer regeneration via **`@technical-seed-writer`** with explicit user approval — never automatic; if the user declines, continue the archive normally. This closure check protects future sessions from a silently aging seed. Then delegate to **`@documenter`** only after explicit user approval to archive
|
|
263
263
|
9. **Memory Record**: After a successful archive, delegate to **`@memory-keeper`** in Automatic Record mode when a concrete, plausible candidate exists, with the factual completed-work summary and validation evidence supporting it. If no candidate exists, delegate Optional Draft with the factual completed-work summary, `no-automatic-candidate` classification, and the reason no candidate was identified. When Automatic Record returns `no-entry-warranted`, use its draft or delegate Optional Draft with that classification and reason if it could not provide one. Before asking, show the final work summary, classification, reason, and exact draft, then stop for explicit user approval. If no safe draft is available, report that outcome and finish without asking or storing. On approval, delegate User-Approved Record with the unchanged draft, the factual summary and validation evidence used to compose it, archived change name, and card context. On rejection, do not store.
|
|
264
264
|
10. **Report**: Return final status or blocking findings to the user after automatic storage, an explicit decline, or User-Approved Record completes.
|
|
265
265
|
|
|
@@ -291,6 +291,17 @@ Before advancing to the next stage, verify that each subagent returned a usable
|
|
|
291
291
|
|
|
292
292
|
For each validation command in the tester result, including format check and lint, preserve a Validation Ledger entry with: command, outcome (`passed`, `task-regression`, `pre-existing-unrelated`, or `inconclusive`), and related files when it failed. Pass it unchanged to `@reviewer`. A confirmed `pre-existing-unrelated` result is reported once in the final status as a non-blocking residual limitation; do not stop, re-run it, or request a correction unless a later relevant change invalidates that classification.
|
|
293
293
|
|
|
294
|
+
### Handling subagent returns
|
|
295
|
+
|
|
296
|
+
A subagent return is a payload to distill, not a message to forward. Before the next stage:
|
|
297
|
+
|
|
298
|
+
- Extract only the fields the next stage needs: `task-owned files`, Validation Ledger entries, flags (`SPEC UPDATE RECOMMENDED`, `SEED_ACTION_REQUIRED`), verdicts, blockers, and card context when relevant.
|
|
299
|
+
- Never copy a subagent's raw return — prose, logs, diffs, or command output — into the next delegation or the final report; pass distilled fields only.
|
|
300
|
+
- The caps declared in each agent's output section bound its return. If a return exceeds them, summarize it and keep the detail only for the current stage; offer the full detail only if the user asks.
|
|
301
|
+
- Evidence survives as fields, not as text: `file:line` for code, ledger entries for commands, flags for decisions.
|
|
302
|
+
|
|
303
|
+
**Output cap**: the final report to the user max 15 lines — status, changed paths, validation result, blockers; never paste subagent returns, logs, or diffs.
|
|
304
|
+
|
|
294
305
|
### Expected output from `@context-resolver`
|
|
295
306
|
|
|
296
307
|
- The resolved card: id, title, work item type, and project
|
package/agents/reviewer.md
CHANGED
|
@@ -165,6 +165,8 @@ Return a short structured report with:
|
|
|
165
165
|
- missing or inconclusive command evidence that requires focused verification by `@tester`, or "none"
|
|
166
166
|
- overall review verdict
|
|
167
167
|
|
|
168
|
+
**Output cap**: at most 5 findings per severity (`CRITICAL`, `WARNING`, `SUGGESTION`); if more exist, keep the 5 highest-impact and state the count of the rest, offering detail on request. `Summary` max 5 lines. Cite `file:line`; never paste diffs or code.
|
|
169
|
+
|
|
168
170
|
Use this format:
|
|
169
171
|
|
|
170
172
|
```md
|
package/agents/spec-writer.md
CHANGED
|
@@ -96,6 +96,8 @@ After writing the artifacts, respond with a short structured summary including:
|
|
|
96
96
|
- short scope summary
|
|
97
97
|
- open questions, assumptions, or risks
|
|
98
98
|
|
|
99
|
+
**Output cap**: summary max 10 lines; at most 5 open questions, assumptions, or risks combined (offer the rest on request); paths only — never restate artifact content.
|
|
100
|
+
|
|
99
101
|
## Important
|
|
100
102
|
|
|
101
103
|
- Prefer the smallest correct aspec change that captures the intended behavior
|
|
@@ -132,3 +132,5 @@ When you were delegated, do not address the developer as if they had called you:
|
|
|
132
132
|
include the required `SEED_ACTION_REQUIRED` marker.
|
|
133
133
|
- When mentioning credentials, name the variable, key, or file and **never** reproduce its value.
|
|
134
134
|
- Be concise: orientation the caller can act on, not an inventory.
|
|
135
|
+
|
|
136
|
+
**Output cap**: prose max 15 lines; required state or check reports are payload and stay complete; cite paths instead of pasting content.
|
|
@@ -49,8 +49,13 @@ action was explicitly requested, run `ancleto discovery --check` once and read i
|
|
|
49
49
|
`config.outputDir`, including `units/_map.md`. Use the same pack for any optional dossier.
|
|
50
50
|
4. Run `ancleto discovery --check` once to validate the written seed. This is state-only: do
|
|
51
51
|
not generate another pack after it.
|
|
52
|
-
5. Return the
|
|
53
|
-
and any evidence limitations recorded in `unknowns.md`.
|
|
52
|
+
5. Return the result as specified in `## Output`.
|
|
54
53
|
|
|
55
54
|
If the pack fails, writing fails, or the final state is not usable, report the exact blocker;
|
|
56
55
|
do not claim the seed was generated.
|
|
56
|
+
|
|
57
|
+
## Output
|
|
58
|
+
|
|
59
|
+
- The output directory, the files created or updated, the single pack path, the final state, and any evidence limitations recorded in `unknowns.md`.
|
|
60
|
+
|
|
61
|
+
**Output cap**: max 8 lines — paths only; never paste file contents or the pack.
|
package/agents/tester.md
CHANGED
|
@@ -167,6 +167,8 @@ After validation, return a short structured summary including:
|
|
|
167
167
|
- failed verification items, if any
|
|
168
168
|
- untested gaps or assumptions, if any
|
|
169
169
|
|
|
170
|
+
**Output cap**: Validation Ledger entries are one line each — never paste command output; collapse repeated `passed` runs of the same command into one line with a count; keep at most 15 lines, preserving every failure and every task-owned test result. Summary max 10 lines; offer full detail on request.
|
|
171
|
+
|
|
170
172
|
## Important
|
|
171
173
|
|
|
172
174
|
- Prefer the smallest useful test change that validates the approved behavior
|
package/package.json
CHANGED
|
@@ -42,14 +42,24 @@ Check for delta specs at `aspec/changes/<name>/specs/`; if none, proceed without
|
|
|
42
42
|
- `## RENAMED Requirements` → rename using the `FROM:`/`TO:` pair.
|
|
43
43
|
- Proceed to archive regardless of the choice.
|
|
44
44
|
|
|
45
|
-
### 3.
|
|
45
|
+
### 3. Check technical seed freshness
|
|
46
|
+
|
|
47
|
+
If the `ancleto` CLI is available in this project, run `ancleto discovery --check` (read-only) and read its JSON `state`.
|
|
48
|
+
|
|
49
|
+
- **`STALE`**: warn that the technical seed is out of date for the current code, and offer to regenerate it now (follow the `ancleto-technical-discovery` skill) or to continue archiving with the stale seed.
|
|
50
|
+
- **Any other state**: continue without comment.
|
|
51
|
+
- Never regenerate automatically — regenerate only with the user's explicit approval.
|
|
52
|
+
- If the user declines, continue the archive normally and record the stale seed in the summary.
|
|
53
|
+
- If the CLI is unavailable, skip this step.
|
|
54
|
+
|
|
55
|
+
### 4. Perform the archive
|
|
46
56
|
|
|
47
57
|
Create `aspec/changes/archive/` if absent. Target: `YYYY-MM-DD-<change-name>` (current date).
|
|
48
58
|
|
|
49
59
|
- **Target exists**: fail, suggesting a rename or different date.
|
|
50
60
|
- **Otherwise**: delete scaffold-only files (e.g., `aspec/changes/<name>/context.md` — never preserved), then move the change directory to `aspec/changes/archive/YYYY-MM-DD-<name>/`.
|
|
51
61
|
|
|
52
|
-
###
|
|
62
|
+
### 5. Capture lessons into persistent memory
|
|
53
63
|
|
|
54
64
|
Record what this change taught:
|
|
55
65
|
|
|
@@ -64,7 +74,7 @@ Record what this change taught:
|
|
|
64
74
|
|
|
65
75
|
Record only durable lessons — decisions whose reasons aren't visible in the result, constraints, verified workarounds. Never workflow meta. If nothing meets the bar, record nothing and say so.
|
|
66
76
|
|
|
67
|
-
###
|
|
77
|
+
### 6. Display summary
|
|
68
78
|
|
|
69
79
|
```
|
|
70
80
|
## Archive Complete
|
|
@@ -75,12 +85,15 @@ Record only durable lessons — decisions whose reasons aren't visible in the re
|
|
|
75
85
|
**Memories recorded:** <list, or "None">
|
|
76
86
|
```
|
|
77
87
|
|
|
78
|
-
|
|
88
|
+
When the seed was `STALE`, add a `**Seed:**` line: `Regenerated` or `Stale — regeneration declined`.
|
|
89
|
+
|
|
90
|
+
If warnings applied (incomplete tasks, skipped sync, stale seed), show an "Archive Complete (with warnings)" variant listing them.
|
|
79
91
|
|
|
80
92
|
## Guardrails
|
|
81
93
|
|
|
82
94
|
- Always prompt for change selection if not provided.
|
|
83
95
|
- Don't block archiving on warnings — inform and confirm.
|
|
96
|
+
- Never regenerate the technical seed automatically: offer it, and continue the archive if the user declines.
|
|
84
97
|
- If the target archive directory exists, fail instead of overwriting.
|
|
85
98
|
- Delete scaffold-only files (`context.md`) before moving; never archive them.
|
|
86
99
|
- `recordRule`/`recordDecision` accept only `memory_key`, `content`, `justification`, `scope`. Never send `source`, `confidence`, `status` or `id` — the runtime manages those.
|