@ancleto/spec 0.6.32 → 0.6.33
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 +14 -3
- package/agents/documenter.md +1 -1
- package/agents/orchestrator.md +11 -1
- package/agents/spec-writer.md +3 -3
- package/package.json +1 -1
- package/skills/ancleto-archive/SKILL.md +1 -1
- package/skills/ancleto-bulk-archive/SKILL.md +1 -1
- package/skills/ancleto-continue/SKILL.md +1 -1
- package/skills/ancleto-explore/SKILL.md +1 -1
- package/skills/ancleto-ff/SKILL.md +1 -1
- package/skills/ancleto-new/SKILL.md +1 -1
- package/skills/ancleto-onboard/SKILL.md +1 -1
- package/skills/ancleto-propose/SKILL.md +1 -1
- package/skills/ancleto-sync-specs/SKILL.md +1 -1
- package/skills/ancleto-upgrade/SKILL.md +1 -1
- package/src/cli/index.js +39 -8
- package/templates/AGENTS.md +6 -2
package/README.md
CHANGED
|
@@ -178,7 +178,7 @@ El registro es tuyo y local: no viaja con el repo ni se comparte. `ANCLETO_PROJE
|
|
|
178
178
|
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:
|
|
179
179
|
|
|
180
180
|
```bash
|
|
181
|
-
ancleto init --agent opencode --tier normal
|
|
181
|
+
ancleto init --agent opencode --tier normal --lang es
|
|
182
182
|
```
|
|
183
183
|
|
|
184
184
|
| Tier | Qué hace |
|
|
@@ -189,6 +189,17 @@ ancleto init --agent opencode --tier normal
|
|
|
189
189
|
|
|
190
190
|
La configuración se preserva en `.ancletorc` (raíz del proyecto) y `.ancleto-tier` (junto a la configuración instalada).
|
|
191
191
|
|
|
192
|
+
### Idioma de los artifacts
|
|
193
|
+
|
|
194
|
+
El contenido de `proposal.md`, `design.md`, `tasks.md` y `specs/` se escribe en el idioma de tu conversación (`auto`, el default) o en el código que fijes con `--lang`:
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
ancleto init --lang auto # detecta el idioma de tus primeros mensajes y lo guarda
|
|
198
|
+
ancleto init --lang es # fija español para ese proyecto
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Con `auto`, el orquestador detecta el idioma en tus primeros hasta 3 mensajes y lo persiste en `.ancletorc` → `language`. Podés volver a `auto` o fijar otro código cuando quieras (`auto | es | en | pt`). Lo que **nunca** se traduce: los keywords (`Requirement`, `Scenario`, `SHALL`, `WHEN`/`THEN`/`AND`) y los nombres de archivos y directorios.
|
|
202
|
+
|
|
192
203
|
---
|
|
193
204
|
|
|
194
205
|
## Uso rápido
|
|
@@ -226,10 +237,10 @@ ancleto discovery # Genera .discovery-map.json y empaqueta el repo
|
|
|
226
237
|
## Referencia de comandos CLI
|
|
227
238
|
|
|
228
239
|
```bash
|
|
229
|
-
ancleto init [--agent <nombre>] [--tier <nivel>] [--with-azure]
|
|
240
|
+
ancleto init [--agent <nombre>] [--tier <nivel>] [--lang <codigo>] [--with-azure]
|
|
230
241
|
# Configura el proyecto (interactivo en TTY)
|
|
231
242
|
|
|
232
|
-
ancleto install [--project <dir>] [--tier <nivel>] [--agent <nombre>] [--no-mcp]
|
|
243
|
+
ancleto install [--project <dir>] [--tier <nivel>] [--agent <nombre>] [--lang <codigo>] [--no-mcp]
|
|
233
244
|
# Instala agentes, skills y templates
|
|
234
245
|
|
|
235
246
|
ancleto update # Re-instala la última versión sobre lo existente
|
package/agents/documenter.md
CHANGED
|
@@ -117,7 +117,7 @@ Do not treat archive as a blind file move.
|
|
|
117
117
|
|
|
118
118
|
When a completed change modifies behavior through aspec deltas, `aspec/specs/` must reflect that completed behavior before the change is archived.
|
|
119
119
|
|
|
120
|
-
**Language**: spec
|
|
120
|
+
**Language**: write spec content in the user's conversation language (or the project's configured `language` in `.ancletorc`). The requirement/scenario keywords (`Requirement`, `Scenario`, `SHALL`, `WHEN`/`THEN`/`AND`, `ADDED/MODIFIED/REMOVED/RENAMED Requirements`) are literal and MUST NOT be translated. Paths, file names, and identifiers stay unchanged.
|
|
121
121
|
|
|
122
122
|
Handle these delta sections carefully:
|
|
123
123
|
|
package/agents/orchestrator.md
CHANGED
|
@@ -124,7 +124,17 @@ Azure DevOps is optional and **disabled by default**. Before any Work Item intak
|
|
|
124
124
|
|
|
125
125
|
### Resolved Context Envelope
|
|
126
126
|
|
|
127
|
-
Keep this envelope for the entire session. Do not reconstruct it from memory or reduce it to a prose summary. When a Work Item was resolved, it contains its id, title, type, project, full normalized description, and full acceptance criteria. Add the original user request, enumerated requirements, explicit restrictions, and later user decisions or exclusions.
|
|
127
|
+
Keep this envelope for the entire session. Do not reconstruct it from memory or reduce it to a prose summary. When a Work Item was resolved, it contains its id, title, type, project, full normalized description, and full acceptance criteria. Add the original user request, enumerated requirements, explicit restrictions, and later user decisions or exclusions. Carry the resolved artifacts language (`language`) in the envelope as well.
|
|
128
|
+
|
|
129
|
+
### Artifacts Language
|
|
130
|
+
|
|
131
|
+
Resolve the working language for artifact content once per session:
|
|
132
|
+
|
|
133
|
+
- Read `language` from `.ancletorc` at the repo root.
|
|
134
|
+
- If it is `auto`, detect the language from the user's first up to 3 messages in this session. If the user never deviates, that language governs.
|
|
135
|
+
- Persist it: the first write-capable delegation in the session (`@spec-writer` when spec generation runs, otherwise `@coder`) MUST update `.ancletorc` → `language` with the resolved code, but only when it is currently `auto`. This is silent bookkeeping — never ask the user for it. An explicit configured code is never overwritten.
|
|
136
|
+
- Pass the resolved `language` in the Resolved Context Envelope to every subagent that writes artifacts.
|
|
137
|
+
- Artifact content uses the resolved language; keywords (`Requirement`, `Scenario`, `SHALL`, `WHEN`/`THEN`/`AND`, `ADDED/MODIFIED/REMOVED/RENAMED Requirements`) and file/directory names stay literal English.
|
|
128
138
|
|
|
129
139
|
Pass the relevant envelope verbatim when delegating: `@coder` receives the implementation scope; `@tester` receives it plus the coder's modified files and risks; `@reviewer` receives it plus task-owned files and the Validation Ledger. Do not omit numbered requirements, paths, commands, acceptance criteria, or explicit exclusions. Only `@context-resolver` may fetch a Work Item. If a subagent says it lacks context, supply the envelope or stop; never tell it to query Azure DevOps.
|
|
130
140
|
|
package/agents/spec-writer.md
CHANGED
|
@@ -19,9 +19,9 @@ Read `AGENTS.md` at the repo root for project-specific conventions, tech stack,
|
|
|
19
19
|
|
|
20
20
|
## Language Requirement
|
|
21
21
|
|
|
22
|
-
-
|
|
23
|
-
- Keywords are literal and MUST NOT be translated: `Requirement`, `Scenario`, `SHALL`, `WHEN`/`THEN`, `ADDED Requirements`, `MODIFIED Requirements`, `REMOVED Requirements`, `RENAMED Requirements`
|
|
24
|
-
- File names and directory names MUST
|
|
22
|
+
- Write artifact content in the user's conversation language (or the project's configured `language` in `.ancletorc`)
|
|
23
|
+
- Keywords are literal and MUST NOT be translated: `Requirement`, `Scenario`, `SHALL`, `WHEN`/`THEN`/`AND`, `ADDED Requirements`, `MODIFIED Requirements`, `REMOVED Requirements`, `RENAMED Requirements`
|
|
24
|
+
- File names and directory names are literal and MUST NOT be translated: English kebab-case, following aspec conventions
|
|
25
25
|
|
|
26
26
|
## Primary Responsibility
|
|
27
27
|
|
package/package.json
CHANGED
|
@@ -10,7 +10,7 @@ metadata:
|
|
|
10
10
|
|
|
11
11
|
# aspec Archive
|
|
12
12
|
|
|
13
|
-
**Artifacts language**: write
|
|
13
|
+
**Artifacts language**: write artifact content in the user's conversation language (or the project's configured `language` in `.ancletorc`). Keywords (`Requirement`, `Scenario`, `SHALL`, `WHEN`/`THEN`/`AND`, `ADDED/MODIFIED/REMOVED/RENAMED Requirements`) and file/directory names are literal and MUST NOT be translated.
|
|
14
14
|
|
|
15
15
|
Archive a completed change: check completion, sync delta specs, move the directory. No external binaries.
|
|
16
16
|
|
|
@@ -10,7 +10,7 @@ metadata:
|
|
|
10
10
|
|
|
11
11
|
# aspec Bulk Archive
|
|
12
12
|
|
|
13
|
-
**Artifacts language**: write
|
|
13
|
+
**Artifacts language**: write artifact content in the user's conversation language (or the project's configured `language` in `.ancletorc`). Keywords (`Requirement`, `Scenario`, `SHALL`, `WHEN`/`THEN`/`AND`, `ADDED/MODIFIED/REMOVED/RENAMED Requirements`) and file/directory names are literal and MUST NOT be translated.
|
|
14
14
|
|
|
15
15
|
Archive many completed changes at once, resolving spec conflicts against the implementation. No external binaries.
|
|
16
16
|
|
|
@@ -10,7 +10,7 @@ metadata:
|
|
|
10
10
|
|
|
11
11
|
# aspec Continue
|
|
12
12
|
|
|
13
|
-
**Artifacts language**: write
|
|
13
|
+
**Artifacts language**: write artifact content in the user's conversation language (or the project's configured `language` in `.ancletorc`). Keywords (`Requirement`, `Scenario`, `SHALL`, `WHEN`/`THEN`/`AND`, `ADDED/MODIFIED/REMOVED/RENAMED Requirements`) and file/directory names are literal and MUST NOT be translated.
|
|
14
14
|
|
|
15
15
|
Continue a change by creating exactly ONE next artifact. No external binaries: state is derived by which artifact files exist.
|
|
16
16
|
|
|
@@ -10,7 +10,7 @@ metadata:
|
|
|
10
10
|
|
|
11
11
|
# aspec Explore
|
|
12
12
|
|
|
13
|
-
**Artifacts language**: write
|
|
13
|
+
**Artifacts language**: write artifact content in the user's conversation language (or the project's configured `language` in `.ancletorc`). Keywords (`Requirement`, `Scenario`, `SHALL`, `WHEN`/`THEN`/`AND`, `ADDED/MODIFIED/REMOVED/RENAMED Requirements`) and file/directory names are literal and MUST NOT be translated.
|
|
14
14
|
|
|
15
15
|
Enter explore mode. Think deeply. Visualize freely. Follow the conversation.
|
|
16
16
|
|
|
@@ -10,7 +10,7 @@ metadata:
|
|
|
10
10
|
|
|
11
11
|
# aspec FF
|
|
12
12
|
|
|
13
|
-
**Artifacts language**: write
|
|
13
|
+
**Artifacts language**: write artifact content in the user's conversation language (or the project's configured `language` in `.ancletorc`). Keywords (`Requirement`, `Scenario`, `SHALL`, `WHEN`/`THEN`/`AND`, `ADDED/MODIFIED/REMOVED/RENAMED Requirements`) and file/directory names are literal and MUST NOT be translated.
|
|
14
14
|
|
|
15
15
|
Fast-forward artifact creation: generate everything needed to start implementation, writing files directly. No external binaries.
|
|
16
16
|
|
|
@@ -10,7 +10,7 @@ metadata:
|
|
|
10
10
|
|
|
11
11
|
# aspec New
|
|
12
12
|
|
|
13
|
-
**Artifacts language**: write
|
|
13
|
+
**Artifacts language**: write artifact content in the user's conversation language (or the project's configured `language` in `.ancletorc`). Keywords (`Requirement`, `Scenario`, `SHALL`, `WHEN`/`THEN`/`AND`, `ADDED/MODIFIED/REMOVED/RENAMED Requirements`) and file/directory names are literal and MUST NOT be translated.
|
|
14
14
|
|
|
15
15
|
Start a new change with a filesystem-native, artifact-driven flow. No external binaries: every step is a direct file operation.
|
|
16
16
|
|
|
@@ -10,7 +10,7 @@ metadata:
|
|
|
10
10
|
|
|
11
11
|
# aspec Onboard
|
|
12
12
|
|
|
13
|
-
**Artifacts language**: write
|
|
13
|
+
**Artifacts language**: write artifact content in the user's conversation language (or the project's configured `language` in `.ancletorc`). Keywords (`Requirement`, `Scenario`, `SHALL`, `WHEN`/`THEN`/`AND`, `ADDED/MODIFIED/REMOVED/RENAMED Requirements`) and file/directory names are literal and MUST NOT be translated.
|
|
14
14
|
|
|
15
15
|
Walk a first-time user through one complete spec-driven cycle on a real task. No external binaries.
|
|
16
16
|
|
|
@@ -10,7 +10,7 @@ metadata:
|
|
|
10
10
|
|
|
11
11
|
# aspec Propose
|
|
12
12
|
|
|
13
|
-
**Artifacts language**: write
|
|
13
|
+
**Artifacts language**: write artifact content in the user's conversation language (or the project's configured `language` in `.ancletorc`). Keywords (`Requirement`, `Scenario`, `SHALL`, `WHEN`/`THEN`/`AND`, `ADDED/MODIFIED/REMOVED/RENAMED Requirements`) and file/directory names are literal and MUST NOT be translated.
|
|
14
14
|
|
|
15
15
|
Create a change and all its artifacts in one step, writing files directly. No external binaries.
|
|
16
16
|
|
|
@@ -10,7 +10,7 @@ metadata:
|
|
|
10
10
|
|
|
11
11
|
# aspec Sync
|
|
12
12
|
|
|
13
|
-
**Artifacts language**: write
|
|
13
|
+
**Artifacts language**: write artifact content in the user's conversation language (or the project's configured `language` in `.ancletorc`). Keywords (`Requirement`, `Scenario`, `SHALL`, `WHEN`/`THEN`/`AND`, `ADDED/MODIFIED/REMOVED/RENAMED Requirements`) and file/directory names are literal and MUST NOT be translated.
|
|
14
14
|
|
|
15
15
|
Sync delta specs from a change to main specs.
|
|
16
16
|
|
|
@@ -19,7 +19,7 @@ metadata:
|
|
|
19
19
|
|
|
20
20
|
# ancleto-upgrade
|
|
21
21
|
|
|
22
|
-
**Artifacts language**: write
|
|
22
|
+
**Artifacts language**: write artifact content in the user's conversation language (or the project's configured `language` in `.ancletorc`). Keywords (`Requirement`, `Scenario`, `SHALL`, `WHEN`/`THEN`/`AND`, `ADDED/MODIFIED/REMOVED/RENAMED Requirements`) and file/directory names are literal and MUST NOT be translated.
|
|
23
23
|
|
|
24
24
|
Generate an aspec change migrating any library/runtime to a new major version; never edit code.
|
|
25
25
|
|
package/src/cli/index.js
CHANGED
|
@@ -32,14 +32,15 @@ Uso:
|
|
|
32
32
|
ancleto install --no-mcp Igual que install pero sin tocar config MCP
|
|
33
33
|
ancleto install --with-engram Ademas configura el MCP externo engram (memoria opcional)
|
|
34
34
|
ancleto install --tier <nivel> normal | minimo | gratis (wizard interactivo en TTY)
|
|
35
|
+
ancleto install --lang <codigo> auto | es | en | pt (idioma de los artifacts; auto = idioma de la conversacion)
|
|
35
36
|
ancleto install --agent <nombre> opencode | vscode | antigravity | cursor | roo (wizard si no esta guardado)
|
|
36
37
|
ancleto update [--project <dir>] Alias de install (re-instala sobre lo existente)
|
|
37
38
|
Parado en un proyecto con .ancletorc opera sobre ese proyecto;
|
|
38
39
|
usa --global para forzar el alcance global
|
|
39
40
|
ancleto upgrade [--agent <nombre>] Re-aplica templates (LOCKED) y skills sobre el proyecto actual
|
|
40
|
-
ancleto init [--with-azure] [--agent <nombre>] [--tier <nivel>]
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
ancleto init [--with-azure] [--agent <nombre>] [--tier <nivel>] [--lang <codigo>]
|
|
42
|
+
Crea .ancletorc en el repositorio actual
|
|
43
|
+
(interactivo en TTY: banner + menu; Azure desactivado por defecto)
|
|
43
44
|
ancleto discovery --check Estado del seed (READY/STALE/PARTIAL/MISSING)
|
|
44
45
|
ancleto discovery [--compress] [--include G] [--ignore G] [--token-budget N]
|
|
45
46
|
Empaca el repo con Repomix y guarda estado
|
|
@@ -622,6 +623,22 @@ function scanTierFlag(args) {
|
|
|
622
623
|
return t
|
|
623
624
|
}
|
|
624
625
|
|
|
626
|
+
const SUPPORTED_LANGS = ['auto', 'es', 'en', 'pt']
|
|
627
|
+
|
|
628
|
+
function scanLangFlag(args) {
|
|
629
|
+
const l = flagValue(args, '--lang')
|
|
630
|
+
if (!l) return null
|
|
631
|
+
if (!SUPPORTED_LANGS.includes(l)) {
|
|
632
|
+
console.error(`ancleto: idioma invalido: ${l} (${SUPPORTED_LANGS.join('|')})`)
|
|
633
|
+
process.exit(1)
|
|
634
|
+
}
|
|
635
|
+
return l
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
function langLabel(code) {
|
|
639
|
+
return { auto: 'automatico (idioma de la conversacion)', es: 'espanol', en: 'ingles', pt: 'portugues' }[code] || code
|
|
640
|
+
}
|
|
641
|
+
|
|
625
642
|
async function resolveAgent(args, existing, allowAsk = Boolean(process.stdin.isTTY)) {
|
|
626
643
|
const flag = scanAgentFlag(args)
|
|
627
644
|
if (flag) return flag
|
|
@@ -820,9 +837,10 @@ async function install(args) {
|
|
|
820
837
|
: null
|
|
821
838
|
|
|
822
839
|
let agent = agentFlag || (existingRc?.agent && SUPPORTED_AGENTS.includes(existingRc.agent) ? existingRc.agent : null)
|
|
840
|
+
let language = scanLangFlag(args) || (existingRc?.language && SUPPORTED_LANGS.includes(existingRc.language) ? existingRc.language : null)
|
|
823
841
|
|
|
824
842
|
let bannerShown = false
|
|
825
|
-
const isInteractive = Boolean(process.stdout.isTTY) && ((projectDir && !agent) || !tier)
|
|
843
|
+
const isInteractive = Boolean(process.stdout.isTTY) && ((projectDir && !agent) || !tier || !language)
|
|
826
844
|
if (isInteractive) {
|
|
827
845
|
await showBanner()
|
|
828
846
|
bannerShown = true
|
|
@@ -833,8 +851,13 @@ async function install(args) {
|
|
|
833
851
|
const current = TIERS[storedTier] ? storedTier : ''
|
|
834
852
|
tier = await selectOption('Tier de costo', Object.keys(TIERS), Math.max(0, Object.keys(TIERS).indexOf(current)))
|
|
835
853
|
}
|
|
854
|
+
if (!language) {
|
|
855
|
+
const picked = await selectOption('Idioma de los artifacts', SUPPORTED_LANGS.map(langLabel), 0)
|
|
856
|
+
language = SUPPORTED_LANGS[SUPPORTED_LANGS.map(langLabel).indexOf(picked)] || 'auto'
|
|
857
|
+
}
|
|
836
858
|
stopBanner()
|
|
837
859
|
}
|
|
860
|
+
if (!language) language = 'auto'
|
|
838
861
|
|
|
839
862
|
if (projectDir && !agent) agent = DEFAULT_AGENT
|
|
840
863
|
if (!tier) tier = TIERS[storedTier] ? storedTier : 'normal'
|
|
@@ -862,6 +885,7 @@ async function install(args) {
|
|
|
862
885
|
const agentSkillsDir = await installAgentSkills(projectDir, agent)
|
|
863
886
|
await writeManifest(projectDir, {
|
|
864
887
|
agent,
|
|
888
|
+
language,
|
|
865
889
|
...(gratisModelChoice ? { gratisModel: gratisModelChoice } : {}),
|
|
866
890
|
installedPaths: {
|
|
867
891
|
templates: ['AGENTS.md', 'PRODUCT.md'],
|
|
@@ -942,13 +966,15 @@ async function initProject(args) {
|
|
|
942
966
|
const withAzure = args.includes('--with-azure')
|
|
943
967
|
const agentFlag = scanAgentFlag(args)
|
|
944
968
|
const tierFlag = scanTierFlag(args)
|
|
969
|
+
const langFlag = scanLangFlag(args)
|
|
945
970
|
const existing = await readAncletorc(projectDir)
|
|
946
971
|
const azure = existing?.azure ?? { enabled: false }
|
|
947
972
|
const discovery = existing?.discovery ?? { outputDir: 'docs/technical-discovery', exclude: [] }
|
|
948
973
|
const tierFile = join(projectDir, '.opencode', '.ancleto-tier')
|
|
949
974
|
|
|
950
|
-
let agent, tier
|
|
951
|
-
|
|
975
|
+
let agent, tier, language
|
|
976
|
+
language = langFlag || (existing?.language && SUPPORTED_LANGS.includes(existing.language) ? existing.language : null)
|
|
977
|
+
const isInteractive = Boolean(process.stdout.isTTY) && (!agentFlag || !tierFlag || !language)
|
|
952
978
|
if (isInteractive) {
|
|
953
979
|
await showBanner()
|
|
954
980
|
const agentIdx = Math.max(0, SUPPORTED_AGENTS.indexOf(existing?.agent))
|
|
@@ -956,6 +982,10 @@ async function initProject(args) {
|
|
|
956
982
|
const tierIdx = Math.max(0, Object.keys(TIERS).indexOf(TIERS[storedTier] ? storedTier : ''))
|
|
957
983
|
agent = agentFlag || await selectOption('Agente/IDE', SUPPORTED_AGENTS, agentIdx)
|
|
958
984
|
tier = tierFlag || await selectOption('Tier de costo', Object.keys(TIERS), tierIdx)
|
|
985
|
+
if (!language) {
|
|
986
|
+
const picked = await selectOption('Idioma de los artifacts', SUPPORTED_LANGS.map(langLabel), 0)
|
|
987
|
+
language = SUPPORTED_LANGS[SUPPORTED_LANGS.map(langLabel).indexOf(picked)] || 'auto'
|
|
988
|
+
}
|
|
959
989
|
if (withAzure) {
|
|
960
990
|
azure.enabled = true
|
|
961
991
|
} else {
|
|
@@ -965,6 +995,7 @@ async function initProject(args) {
|
|
|
965
995
|
} else {
|
|
966
996
|
agent = await resolveAgent(args, existing?.agent, false)
|
|
967
997
|
tier = tierFlag
|
|
998
|
+
if (!language) language = 'auto'
|
|
968
999
|
if (withAzure) azure.enabled = true
|
|
969
1000
|
}
|
|
970
1001
|
|
|
@@ -973,13 +1004,13 @@ async function initProject(args) {
|
|
|
973
1004
|
await writeFile(tierFile, tier + '\n')
|
|
974
1005
|
}
|
|
975
1006
|
|
|
976
|
-
const manifest = await writeManifest(projectDir, { azure, discovery, agent })
|
|
1007
|
+
const manifest = await writeManifest(projectDir, { azure, discovery, agent, language })
|
|
977
1008
|
await copyTemplates(projectDir)
|
|
978
1009
|
await scaffoldAspec(projectDir)
|
|
979
1010
|
await refreshWorkingContext(projectDir)
|
|
980
1011
|
await registerProject(projectDir, { agent, tier: tier || null })
|
|
981
1012
|
if (azure.enabled) console.log(AZURE_MCP_NOTICE)
|
|
982
|
-
console.log(`ancleto: .ancletorc actualizado en ${projectDir} (v${manifest.version})${azure.enabled ? ' (Azure habilitado)' : ' (Azure desactivado)'} (Agente: ${agent})${tier ? ` (Tier: ${tier})` : ''}`)
|
|
1013
|
+
console.log(`ancleto: .ancletorc actualizado en ${projectDir} (v${manifest.version})${azure.enabled ? ' (Azure habilitado)' : ' (Azure desactivado)'} (Agente: ${agent})${tier ? ` (Tier: ${tier})` : ''} (Idioma: ${language})`)
|
|
983
1014
|
}
|
|
984
1015
|
|
|
985
1016
|
const DEFAULT_IGNORES = ['node_modules', '.git', 'dist']
|
package/templates/AGENTS.md
CHANGED
|
@@ -71,9 +71,13 @@ comparte.
|
|
|
71
71
|
- **Cambios con scope incierto / arquitectura**: Crear artifacts en `aspec/changes/<name>/`.
|
|
72
72
|
- **Cambios menores / fixes**: Implementación directa.
|
|
73
73
|
- **Cierre**: Archivar con `/cleto-archive` al finalizar.
|
|
74
|
+
|
|
75
|
+
<!-- LOCKED: artifacts-language -->
|
|
74
76
|
- **Idioma de los artifacts**: el contenido de `proposal.md`, `design.md`, `tasks.md` y `specs/` se escribe
|
|
75
|
-
en
|
|
76
|
-
|
|
77
|
+
en el idioma de la conversación con el usuario (o en el `language` configurado en `.ancletorc`).
|
|
78
|
+
Los keywords (`Requirement`, `Scenario`, `SHALL`, `WHEN`/`THEN`/`AND`, `ADDED/MODIFIED/REMOVED/RENAMED
|
|
79
|
+
Requirements`) y los nombres de archivos y directorios son literales en inglés y **no se traducen**.
|
|
80
|
+
<!-- /LOCKED: artifacts-language -->
|
|
77
81
|
|
|
78
82
|
## Tools de Soporte
|
|
79
83
|
|