@ancleto/spec 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/README.md +46 -0
- package/agents/coder.md +149 -0
- package/agents/context-resolver.md +102 -0
- package/agents/documenter.md +157 -0
- package/agents/memory-keeper.md +142 -0
- package/agents/orchestrator.md +423 -0
- package/agents/reviewer.md +205 -0
- package/agents/spec-writer.md +105 -0
- package/agents/technical-discovery.md +134 -0
- package/agents/technical-seed-writer.md +56 -0
- package/agents/tester.md +179 -0
- package/commands/opsx-apply.md +161 -0
- package/commands/opsx-archive.md +172 -0
- package/commands/opsx-bulk-archive.md +255 -0
- package/commands/opsx-continue.md +135 -0
- package/commands/opsx-explore.md +181 -0
- package/commands/opsx-ff.md +164 -0
- package/commands/opsx-new.md +151 -0
- package/commands/opsx-onboard.md +567 -0
- package/commands/opsx-propose.md +174 -0
- package/commands/opsx-recall.md +57 -0
- package/commands/opsx-sync.md +144 -0
- package/commands/opsx-verify.md +176 -0
- package/package.json +41 -0
- package/skills/ancleto-commit/SKILL.md +118 -0
- package/skills/ancleto-pr/SKILL.md +164 -0
- package/skills/ancleto-technical-discovery/SKILL.md +74 -0
- package/skills/ancleto-technical-discovery/references/archetypes/api-layered.md +8 -0
- package/skills/ancleto-technical-discovery/references/archetypes/monorepo.md +8 -0
- package/skills/ancleto-technical-discovery/references/archetypes/ops-tooling.md +7 -0
- package/skills/ancleto-technical-discovery/references/archetypes/service-legacy.md +7 -0
- package/skills/ancleto-technical-discovery/references/archetypes/spa.md +7 -0
- package/skills/ancleto-technical-discovery/references/discovery-config.md +24 -0
- package/skills/ancleto-technical-discovery/references/generation-pipeline.md +56 -0
- package/skills/ancleto-technical-discovery/references/node-frontmatter.md +30 -0
- package/skills/ancleto-technical-discovery/references/output-contract.md +36 -0
- package/skills/ancleto-technical-discovery/references/templates/dossier.md +38 -0
- package/skills/ancleto-technical-discovery/references/templates/inventory.md +22 -0
- package/skills/ancleto-technical-discovery/references/templates/setup.md +27 -0
- package/skills/ancleto-technical-discovery/references/validation-checklist.md +12 -0
- package/skills/ancleto-upgrade/SKILL.md +449 -0
- package/skills/ancleto-upgrade/references/templates.md +320 -0
- package/src/cli/index.js +119 -0
- package/templates/AGENTS.md +36 -0
- package/templates/CONTRIBUTING.md +25 -0
- package/templates/PRODUCT.md +180 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ancleto-commit
|
|
3
|
+
description: Create semantic git commit following conventional commits (conventional commits, protected branches, semantic messages)
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Requires git
|
|
6
|
+
metadata:
|
|
7
|
+
author: ancleto
|
|
8
|
+
version: '1.0'
|
|
9
|
+
category: git-workflow
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
Create a semantic git commit following semantic commit standards.
|
|
13
|
+
|
|
14
|
+
**When to use**: User wants to commit changes with proper semantic commit message.
|
|
15
|
+
|
|
16
|
+
**Steps**
|
|
17
|
+
|
|
18
|
+
1. **Check current branch and status**
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
git rev-parse --abbrev-ref HEAD
|
|
22
|
+
git status
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
If on a protected branch (main, master, develop, qa, sandbox):
|
|
26
|
+
|
|
27
|
+
- ⚠️ Warn the user
|
|
28
|
+
- Suggest creating a feature branch: `feat/`, `fix/`, `chore/`
|
|
29
|
+
- Ask if they want to proceed anyway or create a branch first
|
|
30
|
+
|
|
31
|
+
2. **Determine commit scope**
|
|
32
|
+
|
|
33
|
+
Ask the user (using AskUserQuestion):
|
|
34
|
+
|
|
35
|
+
- "What files should be included in this commit?"
|
|
36
|
+
- Option 1: "Only staged files (git commit)" (Recommended if files are staged)
|
|
37
|
+
- Option 2: "Stage and commit all changes (git add . && git commit)"
|
|
38
|
+
- Option 3: "Let me stage files manually first"
|
|
39
|
+
|
|
40
|
+
If option 3: Stop and let user stage files, then re-run this skill.
|
|
41
|
+
|
|
42
|
+
3. **Analyze changes**
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
git diff --staged # if only staged
|
|
46
|
+
# or
|
|
47
|
+
git diff # if staging all
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
4. **Generate semantic commit message(s)**
|
|
51
|
+
|
|
52
|
+
Based on the diff, propose 1-2 commit messages following conventional commits:
|
|
53
|
+
|
|
54
|
+
**Format:**
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
type(scope): short description in present tense
|
|
58
|
+
|
|
59
|
+
Detailed explanation of WHY this change is needed.
|
|
60
|
+
Optional: Additional context, breaking changes, etc.
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Types:**
|
|
65
|
+
|
|
66
|
+
- `feat`: New feature
|
|
67
|
+
- `fix`: Bug fix
|
|
68
|
+
- `chore`: Maintenance (dependencies, configs, etc.)
|
|
69
|
+
- `docs`: Documentation only
|
|
70
|
+
- `refactor`: Code restructuring (no behavior change)
|
|
71
|
+
- `test`: Adding/updating tests
|
|
72
|
+
- `perf`: Performance improvement
|
|
73
|
+
|
|
74
|
+
**Scope:** Optional, e.g., `(api)`, `(ui)`, `(auth)`
|
|
75
|
+
|
|
76
|
+
**Examples:**
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
feat(auth): add JWT token refresh mechanism
|
|
80
|
+
|
|
81
|
+
Implements automatic token refresh before expiration to improve
|
|
82
|
+
user experience and reduce re-authentication requests.
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
5. **Show command before executing**
|
|
87
|
+
|
|
88
|
+
Display the exact git command that will be executed:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
git commit -m "$(cat <<'EOF'
|
|
92
|
+
type(scope): description
|
|
93
|
+
|
|
94
|
+
Detailed explanation
|
|
95
|
+
|
|
96
|
+
EOF
|
|
97
|
+
)"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Use heredoc format to ensure proper multi-line formatting.
|
|
101
|
+
|
|
102
|
+
6. **Execute commit**
|
|
103
|
+
|
|
104
|
+
After user confirmation, execute the command.
|
|
105
|
+
Then run `git status` to verify success.
|
|
106
|
+
|
|
107
|
+
**Guardrails**
|
|
108
|
+
|
|
109
|
+
- ❌ NEVER modify git config
|
|
110
|
+
- ❌ NEVER force push or use destructive commands
|
|
111
|
+
- ❌ NEVER skip hooks (--no-verify) unless explicitly requested
|
|
112
|
+
- ❌ NEVER commit sensitive files (.env, credentials, tokens)
|
|
113
|
+
- ⚠️ Warn before committing to protected branches
|
|
114
|
+
- ✅ Always use heredoc for multi-line commit messages
|
|
115
|
+
|
|
116
|
+
**Related Documentation**
|
|
117
|
+
|
|
118
|
+
- See `git-commits.md` for full commit conventions
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ancleto-pr
|
|
3
|
+
description: Create pull request in Azure DevOps following conventional commits (semantic title, detailed description, test plan)
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Requires Azure DevOps CLI (az repos)
|
|
6
|
+
metadata:
|
|
7
|
+
author: ancleto
|
|
8
|
+
version: '1.0'
|
|
9
|
+
category: git-workflow
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
Create a pull request in Azure DevOps following semantic standards.
|
|
13
|
+
|
|
14
|
+
**When to use**: User wants to create a PR for their current branch.
|
|
15
|
+
|
|
16
|
+
**Steps**
|
|
17
|
+
|
|
18
|
+
1. **Validate branch state**
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
git rev-parse --abbrev-ref HEAD
|
|
22
|
+
git status
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Checks:**
|
|
26
|
+
|
|
27
|
+
- ❌ If on protected branch (main, master, develop, qa, sandbox): Error and stop
|
|
28
|
+
- ⚠️ If uncommitted changes: Warn and suggest committing first
|
|
29
|
+
- ✅ If clean: Proceed
|
|
30
|
+
|
|
31
|
+
2. **Check remote tracking**
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
git rev-parse --abbrev-ref --symbolic-full-name @{u} 2>/dev/null
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
If no upstream tracking:
|
|
38
|
+
|
|
39
|
+
- Suggest: `git push -u origin <branch-name>`
|
|
40
|
+
- Ask if they want to push now or do it manually
|
|
41
|
+
|
|
42
|
+
3. **Determine base branch**
|
|
43
|
+
|
|
44
|
+
Ask the user (using AskUserQuestion):
|
|
45
|
+
|
|
46
|
+
- "What branch should this PR merge into?"
|
|
47
|
+
- Option 1: "main" (Recommended for most features)
|
|
48
|
+
- Option 2: "develop" (if using gitflow)
|
|
49
|
+
- Option 3: "Other (specify)"
|
|
50
|
+
|
|
51
|
+
4. **Analyze all changes in the PR**
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
git log <base-branch>..HEAD --oneline
|
|
55
|
+
git diff <base-branch>...HEAD --stat
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Review ALL commits that will be included, not just the latest one.
|
|
59
|
+
|
|
60
|
+
5. **Generate PR title and description**
|
|
61
|
+
|
|
62
|
+
**Title format:** `type: Short description (<70 chars)`
|
|
63
|
+
|
|
64
|
+
- Use the same types as commits: feat, fix, chore, docs, etc.
|
|
65
|
+
- Keep concise, details go in description
|
|
66
|
+
|
|
67
|
+
**Description format:**
|
|
68
|
+
|
|
69
|
+
```markdown
|
|
70
|
+
## Summary
|
|
71
|
+
|
|
72
|
+
- Bullet point 1 of main changes
|
|
73
|
+
- Bullet point 2 of main changes
|
|
74
|
+
- Bullet point 3 of main changes
|
|
75
|
+
|
|
76
|
+
## Technical Details
|
|
77
|
+
|
|
78
|
+
- Key implementation decisions
|
|
79
|
+
- Architecture changes (if any)
|
|
80
|
+
- Dependencies added/updated (if any)
|
|
81
|
+
|
|
82
|
+
## Test Plan
|
|
83
|
+
|
|
84
|
+
- [ ] Unit tests pass (`npm test`)
|
|
85
|
+
- [ ] Integration tests pass (if applicable)
|
|
86
|
+
- [ ] Manual testing performed
|
|
87
|
+
- [ ] Tested on [environment/browser/device]
|
|
88
|
+
- [ ] Edge cases covered
|
|
89
|
+
|
|
90
|
+
## Breaking Changes
|
|
91
|
+
|
|
92
|
+
_None_ OR _List breaking changes and migration steps_
|
|
93
|
+
|
|
94
|
+
## Related Issues
|
|
95
|
+
|
|
96
|
+
- Closes #123 (if applicable)
|
|
97
|
+
- Related to #456 (if applicable)
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
🤖 Generated with [OpenCode](https://opencode.ai)
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
6. **Show PR command before executing**
|
|
105
|
+
|
|
106
|
+
Display the exact `az repos pr create` command:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
az repos pr create \
|
|
110
|
+
--title "feat: add user authentication" \
|
|
111
|
+
--description "$(cat <<'EOF'
|
|
112
|
+
## Summary
|
|
113
|
+
...
|
|
114
|
+
|
|
115
|
+
🤖 Generated with OpenCode
|
|
116
|
+
EOF
|
|
117
|
+
)" \
|
|
118
|
+
--source-branch <current-branch> \
|
|
119
|
+
--target-branch <base-branch>
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Use heredoc for description to ensure proper formatting.
|
|
123
|
+
|
|
124
|
+
7. **Create PR**
|
|
125
|
+
|
|
126
|
+
After user confirmation, execute the command.
|
|
127
|
+
|
|
128
|
+
**On success:**
|
|
129
|
+
|
|
130
|
+
- Show the PR URL
|
|
131
|
+
- Suggest next steps: request reviewers, link work items, etc.
|
|
132
|
+
|
|
133
|
+
**On error:**
|
|
134
|
+
|
|
135
|
+
- If "az not found": Install Azure CLI and authenticate
|
|
136
|
+
- If "not authenticated": Run `az login`
|
|
137
|
+
- If other errors: Show error and suggest manual PR creation
|
|
138
|
+
|
|
139
|
+
**Guardrails**
|
|
140
|
+
|
|
141
|
+
- ❌ NEVER create PR from protected branches
|
|
142
|
+
- ❌ NEVER force push before creating PR
|
|
143
|
+
- ⚠️ Warn if uncommitted changes exist
|
|
144
|
+
- ✅ Always analyze ALL commits in the branch, not just the latest
|
|
145
|
+
- ✅ Include test plan checklist
|
|
146
|
+
- ✅ Use heredoc for multi-line description
|
|
147
|
+
- ✅ Add "Generated with OpenCode" footer
|
|
148
|
+
|
|
149
|
+
**Alternative: GitHub PRs**
|
|
150
|
+
|
|
151
|
+
If using GitHub instead of Azure DevOps, use `gh pr create`:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
gh pr create \
|
|
155
|
+
--title "feat: add user authentication" \
|
|
156
|
+
--body "$(cat <<'EOF'
|
|
157
|
+
...
|
|
158
|
+
EOF
|
|
159
|
+
)"
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Related Documentation**
|
|
163
|
+
|
|
164
|
+
- See `CONTRIBUTING.md` for the PR review process
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ancleto-technical-discovery
|
|
3
|
+
description: >
|
|
4
|
+
Use for ANY question about a repository whose answer spans more than one file: what the
|
|
5
|
+
repo is and how it works, architecture, domains, end-to-end flows, business rules and
|
|
6
|
+
where they live, impact of a change, onboarding. Answers from the technical seed in
|
|
7
|
+
docs/technical-discovery/ instead of sweeping the repo, and generates or updates that
|
|
8
|
+
seed when it is missing, partial, or stale. ALWAYS use it — never sweep the repo by hand
|
|
9
|
+
— including vague requests such as "explicame este repo", "explicame cómo funciona este
|
|
10
|
+
repo", "de qué trata este proyecto", "cómo está armado este repo", "explicame la
|
|
11
|
+
arquitectura", "explorá/analizá el repositorio", "dame un overview del proyecto", or
|
|
12
|
+
"onboarding", and their English equivalents. Skip it only when a single known symbol,
|
|
13
|
+
file, or line directly answers the question.
|
|
14
|
+
license: MIT
|
|
15
|
+
metadata:
|
|
16
|
+
author: ancleto
|
|
17
|
+
version: '2.3'
|
|
18
|
+
category: discovery
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# ancleto-technical-discovery
|
|
22
|
+
|
|
23
|
+
The technical seed is a compact, navigable map rather than a repository inventory. It
|
|
24
|
+
preserves the facts that prevent repeated exploration: architecture, entry points,
|
|
25
|
+
business rules, integrations, risks, and coupling. **Every document generated by this
|
|
26
|
+
skill must be written in Spanish**, including headings, tables, descriptions, findings,
|
|
27
|
+
and frontmatter values intended for readers.
|
|
28
|
+
|
|
29
|
+
The CLI packages the repository and computes state; this skill decides which information
|
|
30
|
+
belongs in the seed. When invoked by `@technical-seed-writer`, do not delegate generation
|
|
31
|
+
further or create one subagent per unit: generation happens in one sequential execution.
|
|
32
|
+
|
|
33
|
+
## When to use it
|
|
34
|
+
|
|
35
|
+
- Default: any question that needs repository context, however vaguely phrased, starts
|
|
36
|
+
here. Run `ancleto discovery --check` first and follow this flow.
|
|
37
|
+
- Only exception: when one symbol, file, or line directly answers the question, read the
|
|
38
|
+
code directly.
|
|
39
|
+
|
|
40
|
+
| State | Action |
|
|
41
|
+
| --- | --- |
|
|
42
|
+
| `READY` | Read `index.md` and at most two documents it routes to. |
|
|
43
|
+
| `PARTIAL` | Complete only the missing documents. |
|
|
44
|
+
| `STALE` | Regenerate only the affected focused dossier; update a transversal decision when it changed. |
|
|
45
|
+
| `MISSING` | Generate the concise seed. |
|
|
46
|
+
|
|
47
|
+
Never replace a missing seed with a manual repository sweep.
|
|
48
|
+
|
|
49
|
+
## Concise generation
|
|
50
|
+
|
|
51
|
+
Read `references/generation-pipeline.md` and `references/output-contract.md`. In short:
|
|
52
|
+
|
|
53
|
+
1. Use the single global pack specified in the pipeline. Its output is the complete context
|
|
54
|
+
for this generation; never run a preliminary pack, a second compressed pack.
|
|
55
|
+
2. Write all required root documents and `units/_map.md` from that pack before answering
|
|
56
|
+
the repository question.
|
|
57
|
+
3. Select at most **three** dossiers only when the same global pack contains enough evidence
|
|
58
|
+
to explain a high-impact flow, rule, integration, or risk. Represent all other units in
|
|
59
|
+
`units/_map.md` with their purpose and entry point.
|
|
60
|
+
4. Close with `inventory.md` using directories or globs, never one row per file.
|
|
61
|
+
|
|
62
|
+
Do not create empty documents merely to fill a fixed list. Record absent or unproven
|
|
63
|
+
evidence briefly in `unknowns.md`. Do not include secrets: name the variable or file and
|
|
64
|
+
always omit the value.
|
|
65
|
+
|
|
66
|
+
## Reading
|
|
67
|
+
|
|
68
|
+
1. Read `index.md`.
|
|
69
|
+
2. Select a single reading path.
|
|
70
|
+
3. Open only that destination and, if needed, one linked dossier.
|
|
71
|
+
4. Answer in Spanish and cite the paths referenced by the seed.
|
|
72
|
+
|
|
73
|
+
The seed provides orientation. To confirm a specific or recently changed detail, read only
|
|
74
|
+
the cited source file.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Archetype: layered API
|
|
2
|
+
|
|
3
|
+
Signals: controllers, services, repositories, and dependency registration.
|
|
4
|
+
|
|
5
|
+
Prioritize dossiers for resources with write operations, complex authorization, or rules
|
|
6
|
+
distributed across layers. In the Spanish unit map, link each resource to representative
|
|
7
|
+
routes and controller, service, and persistence paths. Record HTTP contracts and unauthenticated
|
|
8
|
+
routes in Spanish in `decisions.md`.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Archetype: monorepo
|
|
2
|
+
|
|
3
|
+
Signals: workspaces, `nx.json`, `turbo.json`, `pnpm-workspace.yaml`, or several manifests.
|
|
4
|
+
|
|
5
|
+
`units/_map.md` must summarize every workspace in Spanish with its purpose, entry point,
|
|
6
|
+
and direct dependencies. Choose dossiers only for up to three workspaces that connect
|
|
7
|
+
products, expose a shared API, or concentrate a critical rule. Root configuration belongs
|
|
8
|
+
in `setup.md`.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Archetype: operational tooling
|
|
2
|
+
|
|
3
|
+
Signals: manual commands, scripts, filesystem outputs, and environment selection.
|
|
4
|
+
|
|
5
|
+
Prioritize dossiers for operations that write outside the repository or reach production.
|
|
6
|
+
In Spanish, `decisions.md` must describe the destination, reversibility, and required
|
|
7
|
+
confirmations without repeating the full implementation.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Archetype: hybrid legacy service
|
|
2
|
+
|
|
3
|
+
Signals: server views, JavaScript served as static assets, and configuration-borne rules.
|
|
4
|
+
|
|
5
|
+
Prioritize rules that cross server, DOM, and client, especially when two implementations
|
|
6
|
+
exist. Describe divergence in Spanish in `decisions.md`; create a dossier only when the
|
|
7
|
+
complete flow is useful for future changes.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Archetype: SPA
|
|
2
|
+
|
|
3
|
+
Signals: a client router, bundler, components, and shared state.
|
|
4
|
+
|
|
5
|
+
The Spanish map must identify routes, state, HTTP client, and design system. Prioritize a
|
|
6
|
+
dossier for a flow connecting an API response to a rendered value, or for a highly coupled
|
|
7
|
+
boundary. Avoid a dossier per screen or component.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Discovery configuration (`.ancletorc`)
|
|
2
|
+
|
|
3
|
+
`.ancletorc` is a JSON file at the repository root. `ancleto init` owns its installation fields
|
|
4
|
+
(`version`, `installedAt`, `profile`, `tool`, and `installedPaths`) and preserves the team's
|
|
5
|
+
`discovery` section when the tooling is reinstalled. The technical-discovery skill must never
|
|
6
|
+
rewrite any part of this file.
|
|
7
|
+
|
|
8
|
+
The optional `discovery` object configures the technical seed:
|
|
9
|
+
|
|
10
|
+
| Key | Meaning | Default |
|
|
11
|
+
| --- | --- | --- |
|
|
12
|
+
| `outputDir` | Relative directory for generated seed documents. | `docs/technical-discovery` |
|
|
13
|
+
| `archetype` | `auto`, `monorepo`, `api-layered`, `spa`, `ops-tooling`, or `service-legacy`. | `auto` |
|
|
14
|
+
| `readBudgetTokens` | Reading budget for a focused dossier. | `6000` |
|
|
15
|
+
| `exclude` | Extra glob patterns omitted from packs, coverage, and source hashes. | CLI defaults |
|
|
16
|
+
|
|
17
|
+
`node_modules` and `.git` are always excluded, even when the team supplies its own list.
|
|
18
|
+
When `exclude` is configured, it supplements those structural exclusions; it does not replace
|
|
19
|
+
them.
|
|
20
|
+
|
|
21
|
+
Never read `.ancletorc` directly during generation. Run `ancleto discovery --check` and use the
|
|
22
|
+
returned `config`, which has already validated the file, applied defaults, and reported any
|
|
23
|
+
unknown configuration keys. Pass its resolved exclusions to the one Repomix command as
|
|
24
|
+
described by `generation-pipeline.md`.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Concise generation pipeline
|
|
2
|
+
|
|
3
|
+
Generation prioritizes signal over literal coverage. It runs in one sequential execution
|
|
4
|
+
with no subagents and exactly **one** Repomix pack. The result contains eight base documents
|
|
5
|
+
and up to three focused dossiers. All generated documents must be written in Spanish.
|
|
6
|
+
|
|
7
|
+
## 1. Global map
|
|
8
|
+
|
|
9
|
+
First run `ancleto discovery --check` and read its JSON. Its `config` is the resolved
|
|
10
|
+
`discovery` section of `.ancletorc`, including defaults, so it is the only configuration source
|
|
11
|
+
for this execution. Use `config.outputDir` as the only output location and copy the resolved
|
|
12
|
+
`config.exclude` globs into the pack command. Do not parse, create, or edit `.ancletorc` yourself.
|
|
13
|
+
Then run exactly once:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
ancleto discovery --compress --ignore "<config.exclude joined by commas>"
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
`--check` and the final validation do not create packs. Do **not** run an uncompressed pack
|
|
20
|
+
first, do not run `--compress` a second time, and do not run `--include`: the single global
|
|
21
|
+
pack is sufficient context for every document in this seed. The CLI also merges
|
|
22
|
+
`discovery.exclude`; passing the resolved list makes the exclusion scope explicit and must
|
|
23
|
+
not be replaced with an empty `--ignore` flag.
|
|
24
|
+
|
|
25
|
+
Read the pack path printed by that one command. From its contents, identify the archetype,
|
|
26
|
+
entry points, main boundaries, and candidate units, then immediately write these Spanish
|
|
27
|
+
documents under `config.outputDir`:
|
|
28
|
+
|
|
29
|
+
- `index.md`: question router.
|
|
30
|
+
- `overview.md`: purpose, architecture, components, and main journeys.
|
|
31
|
+
- `setup.md`: commands, environments, variable names, and operational conventions.
|
|
32
|
+
- `decisions.md`: rules, contracts, risks, debt, or coupling that affect technical choices.
|
|
33
|
+
- `integrations.md`: external systems and observable private dependencies.
|
|
34
|
+
- `units/_map.md`: a compact table of relevant units, their purpose, entry point, and dossier when present.
|
|
35
|
+
- `unknowns.md`: evidence limits.
|
|
36
|
+
- `inventory.md`: covered directories or globs.
|
|
37
|
+
|
|
38
|
+
## 2. Focused dossiers
|
|
39
|
+
|
|
40
|
+
Select zero to three units in this order: critical business flow, component boundary,
|
|
41
|
+
external integration, configuration-borne rule, or change risk. Create
|
|
42
|
+
`units/<unit>.md` from the **same global pack** with the dossier template; do not run another
|
|
43
|
+
command to refine its context. If the global pack does not establish enough evidence, omit
|
|
44
|
+
the dossier and record the evidence limit in `unknowns.md`.
|
|
45
|
+
|
|
46
|
+
A dossier is not a transcript: it describes responsibilities, flow, rules, and key paths.
|
|
47
|
+
When it exceeds `readBudgetTokens`, keep only facts that answer cross-cutting questions;
|
|
48
|
+
do not split it or create child documents.
|
|
49
|
+
|
|
50
|
+
## 3. Close and update
|
|
51
|
+
|
|
52
|
+
Run `ancleto discovery --check` once more and apply `validation-checklist.md`. This is a
|
|
53
|
+
state-only validation; it must not be followed by another Repomix command. For stale nodes,
|
|
54
|
+
regenerate only the affected documents using one new global generation on a later request.
|
|
55
|
+
If a unit has no dossier, update its row in `units/_map.md` and only the root documents whose
|
|
56
|
+
content changed.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Seed frontmatter
|
|
2
|
+
|
|
3
|
+
Every generated document declares its purpose and provenance in YAML. Reader-facing values,
|
|
4
|
+
including `read_when`, must be written in Spanish.
|
|
5
|
+
|
|
6
|
+
| Field | Required | Purpose |
|
|
7
|
+
| --- | --- | --- |
|
|
8
|
+
| `node` | yes | Relative identifier within the seed. |
|
|
9
|
+
| `kind` | yes | `router`, `overview`, `setup`, `decisions`, `integrations`, `inventory`, `unknowns`, or `dossier`. |
|
|
10
|
+
| `read_when` | yes | Question class answered by the document, in Spanish. |
|
|
11
|
+
| `sources` | dossiers only | Globs for relevant sources. |
|
|
12
|
+
| `sourcesSha` | dossiers only | CLI-computed hash for those globs. |
|
|
13
|
+
| `generatedAt` | yes | Generation timestamp. |
|
|
14
|
+
| `pluginVersion` | yes | Plugin version reported by the CLI. |
|
|
15
|
+
| `skillVersion` | yes | This skill version. |
|
|
16
|
+
|
|
17
|
+
The generated dossier frontmatter must follow this Spanish example:
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
---
|
|
21
|
+
node: units/pagos
|
|
22
|
+
kind: dossier
|
|
23
|
+
read_when: preguntas sobre el cobro y sus reglas
|
|
24
|
+
sources: ["apps/api/pagos/**", "libs/pagos/**"]
|
|
25
|
+
sourcesSha: <hash>
|
|
26
|
+
generatedAt: <ISO timestamp>
|
|
27
|
+
pluginVersion: <version>
|
|
28
|
+
skillVersion: '2.3'
|
|
29
|
+
---
|
|
30
|
+
```
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Output contract
|
|
2
|
+
|
|
3
|
+
The seed is concise, verifiable, and entirely written in Spanish. It does not cover every
|
|
4
|
+
file; it covers the decisions and paths an agent should not need to reconstruct from
|
|
5
|
+
scratch.
|
|
6
|
+
|
|
7
|
+
## Configuration, provenance, and legacy layouts
|
|
8
|
+
|
|
9
|
+
`.ancletorc` is the repository-level configuration and installation record maintained by
|
|
10
|
+
`ancleto init`. Its optional `discovery` section configures the seed's `outputDir`,
|
|
11
|
+
`archetype`, `readBudgetTokens`, and extra `exclude` globs. The skill consumes the resolved
|
|
12
|
+
copy returned by `ancleto discovery --check`; it never edits `.ancletorc` and does not treat it as
|
|
13
|
+
seed content or evidence.
|
|
14
|
+
|
|
15
|
+
## Include
|
|
16
|
+
|
|
17
|
+
- Architecture, entry points, and component boundaries.
|
|
18
|
+
- Business rules in configuration or duplicated across locations.
|
|
19
|
+
- Integrations, observable contracts, and private dependencies.
|
|
20
|
+
- Risks, coupling, and the impact of changing a component.
|
|
21
|
+
- Key paths that allow each claim to be checked.
|
|
22
|
+
|
|
23
|
+
Classify claims as `declarado`, `observado`, `inferido` (with confidence), `conflictivo`,
|
|
24
|
+
or `desconocido`. Do not invent facts; put evidence limits in `unknowns.md`.
|
|
25
|
+
|
|
26
|
+
## Size limits
|
|
27
|
+
|
|
28
|
+
- Root documents are dense and brief; do not repeat the same fact in several documents.
|
|
29
|
+
- Generate at most three focused dossiers.
|
|
30
|
+
- A dossier cites only files that explain its behaviour. It has no per-file or per-directory inventory.
|
|
31
|
+
- `inventory.md` uses globs or directories as orientation, not as an audit.
|
|
32
|
+
|
|
33
|
+
## Secrets
|
|
34
|
+
|
|
35
|
+
Never copy credential values. Name the variable, key, or file and state that its value was
|
|
36
|
+
omitted. Record the relevant risk in `decisions.md`.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Focused dossier template
|
|
2
|
+
|
|
3
|
+
Use only for one of up to three high-impact units. Instructions are in English, but the
|
|
4
|
+
generated document must use the following Spanish structure and Spanish prose.
|
|
5
|
+
|
|
6
|
+
```markdown
|
|
7
|
+
---
|
|
8
|
+
node: units/<unidad>
|
|
9
|
+
kind: dossier
|
|
10
|
+
read_when: preguntas sobre <flujo, regla o integración>
|
|
11
|
+
covers: [<temas>]
|
|
12
|
+
sources: ["<globs>"]
|
|
13
|
+
sourcesSha: <hash from CLI>
|
|
14
|
+
generatedAt: <ISO timestamp>
|
|
15
|
+
pluginVersion: <version from report>
|
|
16
|
+
skillVersion: '2.3'
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# <Unidad>
|
|
20
|
+
|
|
21
|
+
## Propósito
|
|
22
|
+
|
|
23
|
+
<Qué resuelve y por qué importa.>
|
|
24
|
+
|
|
25
|
+
## Recorrido relevante
|
|
26
|
+
|
|
27
|
+
<Entrada → transformación → salida, con paths clave.>
|
|
28
|
+
|
|
29
|
+
## Reglas, contratos y riesgos
|
|
30
|
+
|
|
31
|
+
<Solo los hallazgos que afectan decisiones o cambios.>
|
|
32
|
+
|
|
33
|
+
## Paths clave
|
|
34
|
+
|
|
35
|
+
| Path | Rol |
|
|
36
|
+
| --- | --- |
|
|
37
|
+
| `<path>` | <rol verificable> |
|
|
38
|
+
```
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Scope inventory template
|
|
2
|
+
|
|
3
|
+
`inventory.md` provides coverage orientation, not a file list. Instructions are in English;
|
|
4
|
+
the generated document and its table values must be in Spanish.
|
|
5
|
+
|
|
6
|
+
```markdown
|
|
7
|
+
---
|
|
8
|
+
node: inventory
|
|
9
|
+
kind: inventory
|
|
10
|
+
read_when: verificar el alcance documentado de la semilla
|
|
11
|
+
generatedAt: <ISO timestamp>
|
|
12
|
+
pluginVersion: <version from report>
|
|
13
|
+
skillVersion: '2.3'
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Alcance documentado
|
|
17
|
+
|
|
18
|
+
| Alcance | Documento | Motivo |
|
|
19
|
+
| --- | --- | --- |
|
|
20
|
+
| `apps/**` | `overview.md` | Entrypoints y composición principal |
|
|
21
|
+
| `libs/pagos/**` | `units/pagos.md` | Flujo comercial crítico |
|
|
22
|
+
```
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Setup template
|
|
2
|
+
|
|
3
|
+
`setup.md` records only the operational information needed to run, test, and orient within
|
|
4
|
+
the repository. The generated document must use Spanish and never copy secret values.
|
|
5
|
+
|
|
6
|
+
```markdown
|
|
7
|
+
---
|
|
8
|
+
node: setup
|
|
9
|
+
kind: setup
|
|
10
|
+
read_when: preparar el entorno o ejecutar los comandos principales
|
|
11
|
+
generatedAt: <ISO timestamp>
|
|
12
|
+
pluginVersion: <version from report>
|
|
13
|
+
skillVersion: '2.3'
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Setup
|
|
17
|
+
|
|
18
|
+
## Comandos principales
|
|
19
|
+
|
|
20
|
+
| Objetivo | Comando | Fuente |
|
|
21
|
+
| --- | --- | --- |
|
|
22
|
+
| <objetivo> | `<comando>` | `<path>` |
|
|
23
|
+
|
|
24
|
+
## Entornos y variables
|
|
25
|
+
|
|
26
|
+
<Nombre de variable, propósito y path de referencia; nunca su valor.>
|
|
27
|
+
```
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Validation checklist
|
|
2
|
+
|
|
3
|
+
- [ ] Every generated document is in Spanish.
|
|
4
|
+
- [ ] Required root documents exist and `ancleto discovery --check` reports `READY`.
|
|
5
|
+
- [ ] The resolved `config` from `ancleto discovery --check` was used; `.ancletorc` was not edited.
|
|
6
|
+
- [ ] There are at most three dossiers under `units/` (excluding `_map.md`).
|
|
7
|
+
- [ ] `index.md` lets a reader choose a destination without reading sibling documents.
|
|
8
|
+
- [ ] Each relevant claim cites a path and states its evidence when it is not direct.
|
|
9
|
+
- [ ] `decisions.md` concentrates rules, risks, and coupling without duplicating the overview.
|
|
10
|
+
- [ ] `inventory.md` declares directories or globs, not file lists.
|
|
11
|
+
- [ ] `unknowns.md` records what could not be verified.
|
|
12
|
+
- [ ] No secret values are present.
|