@antoneeo/agentic-sdlc-skill 1.0.7 → 1.0.9
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/CHANGELOG.md +22 -0
- package/gemini-extension.json +1 -1
- package/package.json +7 -1
- package/scripts/init.js +114 -60
- package/scripts/postinstall.js +36 -0
- package/skills/agentic-sdlc-skill/SKILL.md +67 -63
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
Tutte le modifiche significative a questa skill saranno documentate in questo file.
|
|
4
4
|
|
|
5
|
+
## [1.0.9] - 2026-05-10
|
|
6
|
+
### Added
|
|
7
|
+
- New **Smart Discovery** system during project initialization.
|
|
8
|
+
- Official support for **Codex AI** via automatic `.codex/hooks.json` injection.
|
|
9
|
+
- Support for **Cursor** and **Windsurf** via `.cursorrules`.
|
|
10
|
+
- Binary command `agentic-sdlc-init` for use via `npx`.
|
|
11
|
+
- `postinstall` script for global AI CLI detection (Claude, Gemini, Codex).
|
|
12
|
+
- Full English localization for all user-facing messages and scripts.
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
- Updated `init.js` to support the new `ai_docs/` directory structure defined in v1.0.8.
|
|
16
|
+
|
|
17
|
+
## [1.0.8] - 2026-05-10
|
|
18
|
+
### Aggiunto
|
|
19
|
+
- Skill evoluta in "Hybrid Edition": integrazione opzionale con **devPNT** (server MCP) per governance avanzata tramite database e piani gerarchici.
|
|
20
|
+
- Fase di Discovery per il rilevamento automatico dell'ambiente (Standalone vs Hybrid).
|
|
21
|
+
- Supporto per ADR (Architecture Decision Records) e Knowledge Layer (KL) nella fase di chiusura.
|
|
22
|
+
|
|
23
|
+
### Modificato
|
|
24
|
+
- Riorganizzazione dei percorsi di documentazione (`ai_docs/strategic/`, `ai_docs/audit/`, `ai_docs/solutions/`).
|
|
25
|
+
- Aggiornata la documentazione funzionale (`architecture_overview.md`, `external_interfaces.md`) con definizioni più precise.
|
|
26
|
+
|
|
5
27
|
## [1.0.7] - 2026-05-10
|
|
6
28
|
### Modificato
|
|
7
29
|
- Aggiornata l'attribuzione dell'autore (Antonio Pinto) e il copyright in tutti i file (`package.json`, `README.md`, `SKILL.md`).
|
package/gemini-extension.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antoneeo/agentic-sdlc-skill",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "Protocollo SDLC Documentation-First per Gemini CLI. Gestisce audit, analisi, sviluppo e chiusura feature con documentazione sincronizzata.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"gemini-cli",
|
|
@@ -14,6 +14,12 @@
|
|
|
14
14
|
"publishConfig": {
|
|
15
15
|
"access": "public"
|
|
16
16
|
},
|
|
17
|
+
"bin": {
|
|
18
|
+
"agentic-sdlc-init": "scripts/init.js"
|
|
19
|
+
},
|
|
20
|
+
"scripts": {
|
|
21
|
+
"postinstall": "node scripts/postinstall.js"
|
|
22
|
+
},
|
|
17
23
|
"files": [
|
|
18
24
|
"skills",
|
|
19
25
|
"gemini-extension.json",
|
package/scripts/init.js
CHANGED
|
@@ -1,93 +1,147 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
1
|
+
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
const fs = require('fs');
|
|
4
4
|
const path = require('path');
|
|
5
|
+
const { execSync } = require('child_process');
|
|
5
6
|
|
|
6
7
|
const cwd = process.cwd();
|
|
7
8
|
|
|
8
|
-
//
|
|
9
|
+
// Helper for command checking
|
|
10
|
+
function checkCommand(cmd) {
|
|
11
|
+
try {
|
|
12
|
+
execSync(`${cmd} --version`, { stdio: 'ignore' });
|
|
13
|
+
return true;
|
|
14
|
+
} catch (e) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// 1. Path definitions
|
|
9
20
|
const directories = [
|
|
10
|
-
path.join(cwd, '
|
|
11
|
-
path.join(cwd, '
|
|
21
|
+
path.join(cwd, 'ai_docs'),
|
|
22
|
+
path.join(cwd, 'ai_docs', 'strategic'),
|
|
23
|
+
path.join(cwd, 'ai_docs', 'audit'),
|
|
24
|
+
path.join(cwd, 'ai_docs', 'solutions'),
|
|
25
|
+
path.join(cwd, '.codex')
|
|
12
26
|
];
|
|
13
27
|
|
|
14
28
|
const files = {
|
|
15
|
-
architecture: path.join(cwd, '
|
|
16
|
-
existingFeatures: path.join(cwd, '
|
|
17
|
-
featuresHistory: path.join(cwd, '
|
|
29
|
+
architecture: path.join(cwd, 'ai_docs', 'strategic', 'architecture.md'),
|
|
30
|
+
existingFeatures: path.join(cwd, 'ai_docs', 'strategic', 'existing_features.md'),
|
|
31
|
+
featuresHistory: path.join(cwd, 'ai_docs', 'strategic', 'features_history.md'),
|
|
32
|
+
auditPlan: path.join(cwd, 'ai_docs', 'audit', 'audit_plan.md'),
|
|
33
|
+
handoff: path.join(cwd, 'ai_docs', 'audit', 'handoff.md'),
|
|
18
34
|
claudeConfig: path.join(cwd, 'CLAUDE.md'),
|
|
19
|
-
geminiConfig: path.join(cwd, 'GEMINI.md')
|
|
35
|
+
geminiConfig: path.join(cwd, 'GEMINI.md'),
|
|
36
|
+
codexHooks: path.join(cwd, '.codex', 'hooks.json'),
|
|
37
|
+
cursorRules: path.join(cwd, '.cursorrules')
|
|
20
38
|
};
|
|
21
39
|
|
|
22
|
-
// 2.
|
|
23
|
-
const protocolContent = `#
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
## 1.
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
1. \`
|
|
32
|
-
2. \`
|
|
33
|
-
3. \`
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
## 2.
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
## 3.
|
|
42
|
-
|
|
43
|
-
1.
|
|
44
|
-
2.
|
|
45
|
-
3. **
|
|
46
|
-
4.
|
|
47
|
-
|
|
48
|
-
## 4.
|
|
49
|
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
40
|
+
// 2. Operational Protocol (System Prompt)
|
|
41
|
+
const protocolContent = `# "Agentic SDLC" Operational Protocol
|
|
42
|
+
|
|
43
|
+
You are a senior software engineer strictly following a "Documentation-First" process. NEVER implement code without completing the preceding documentation steps. Use your tools (file read/write, shell execution) to adhere to the following phases.
|
|
44
|
+
|
|
45
|
+
## 1. Audit and Alignment Phase
|
|
46
|
+
Before responding to any operational request:
|
|
47
|
+
- Check for the existence of the \`ai_docs/\` folder.
|
|
48
|
+
- If \`ai_docs/\` is missing or essential documents are absent, create them by analyzing the source code:
|
|
49
|
+
1. \`ai_docs/strategic/architecture.md\`: Tech Stack, Directory Structure, Architecture Patterns.
|
|
50
|
+
2. \`ai_docs/strategic/existing_features.md\`: List of current features.
|
|
51
|
+
3. \`ai_docs/strategic/features_history.md\`: Feature history table (ID, Name, Status, Dates).
|
|
52
|
+
4. \`ai_docs/audit/audit_plan.md\`: Codebase analysis plan in batches.
|
|
53
|
+
|
|
54
|
+
## 2. Request Analysis Phase
|
|
55
|
+
For every new feature request:
|
|
56
|
+
- Create \`ai_docs/solutions/ANALYSIS_[feature_name].md\` (Objective, Impact, Action Plan, Test Strategy).
|
|
57
|
+
- Add a entry in \`features_history.md\` with status \`[PLANNED]\`.
|
|
58
|
+
|
|
59
|
+
## 3. Development and Testing Phase
|
|
60
|
+
Only after Phase 2 is complete:
|
|
61
|
+
1. Update feature status to \`[IN_PROGRESS]\`.
|
|
62
|
+
2. Implement code surgically following the plan.
|
|
63
|
+
3. **Mandatory:** Write automated tests following the **AAA (Arrange, Act, Assert)** pattern.
|
|
64
|
+
4. Execute tests. If they fail, fix and re-run until Exit Code is 0.
|
|
65
|
+
|
|
66
|
+
## 4. Closing Phase
|
|
67
|
+
Upon feature completion:
|
|
68
|
+
- Update \`architecture.md\` and \`existing_features.md\` if necessary.
|
|
69
|
+
- Update \`features_history.md\` setting status to \`[COMPLETED]\`.
|
|
52
70
|
`;
|
|
53
71
|
|
|
54
|
-
|
|
55
|
-
|
|
72
|
+
const codexHooksContent = JSON.stringify({
|
|
73
|
+
hooks: {
|
|
74
|
+
SessionStart: [
|
|
75
|
+
{
|
|
76
|
+
hooks: [
|
|
77
|
+
{
|
|
78
|
+
type: "command",
|
|
79
|
+
command: `echo '${protocolContent.replace(/'/g, "'\\''")}'`
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
}, null, 2);
|
|
86
|
+
|
|
87
|
+
const historyBoilerplate = `# Feature History
|
|
56
88
|
|
|
57
|
-
| ID |
|
|
89
|
+
| ID | Feature Name | Status | Start Date | End Date | Analysis Doc | Notes |
|
|
58
90
|
|:---|:---|:---|:---|:---|:---|:---|
|
|
59
|
-
| 000 | Init
|
|
91
|
+
| 000 | Project Init | [COMPLETED] | - | - | - | Automatic initialization |
|
|
60
92
|
`;
|
|
61
93
|
|
|
62
|
-
console.log('🚀
|
|
94
|
+
console.log('🚀 Initializing Agentic SDLC workflow (Discovery Mode)...');
|
|
63
95
|
|
|
64
|
-
// 3.
|
|
96
|
+
// 3. Directory creation
|
|
65
97
|
directories.forEach(dir => {
|
|
66
98
|
if (!fs.existsSync(dir)) {
|
|
67
99
|
fs.mkdirSync(dir, { recursive: true });
|
|
68
|
-
console.log(`📁
|
|
100
|
+
console.log(`📁 Created directory: ${path.relative(cwd, dir)}`);
|
|
69
101
|
}
|
|
70
102
|
});
|
|
71
103
|
|
|
72
|
-
// 4.
|
|
104
|
+
// 4. Basic file writing
|
|
73
105
|
const writeIfNotExists = (filePath, content, description) => {
|
|
74
106
|
if (!fs.existsSync(filePath)) {
|
|
75
107
|
fs.writeFileSync(filePath, content, 'utf8');
|
|
76
|
-
console.log(`📄
|
|
108
|
+
console.log(`📄 Created file: ${path.relative(cwd, filePath)} (${description})`);
|
|
109
|
+
return true;
|
|
77
110
|
} else {
|
|
78
|
-
console.log(`⏭️
|
|
111
|
+
console.log(`⏭️ Skipped: ${path.relative(cwd, filePath)} already exists.`);
|
|
112
|
+
return false;
|
|
79
113
|
}
|
|
80
114
|
};
|
|
81
115
|
|
|
82
|
-
writeIfNotExists(files.architecture, '#
|
|
83
|
-
writeIfNotExists(files.existingFeatures, '#
|
|
84
|
-
writeIfNotExists(files.featuresHistory, historyBoilerplate, '
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
console.log('
|
|
92
|
-
|
|
93
|
-
|
|
116
|
+
writeIfNotExists(files.architecture, '# Project Architecture\n\n- Stack:\n- Patterns:\n', 'Architecture Boilerplate');
|
|
117
|
+
writeIfNotExists(files.existingFeatures, '# Existing Features\n\n- \n', 'Features Boilerplate');
|
|
118
|
+
writeIfNotExists(files.featuresHistory, historyBoilerplate, 'History Table');
|
|
119
|
+
writeIfNotExists(files.auditPlan, '# Audit Plan\n\n| Directory/File | Status | Notes |\n|:---|:---|:---|\n| / | [PENDING] | Initial analysis |\n', 'Audit Plan');
|
|
120
|
+
|
|
121
|
+
// 5. Client Discovery and Configuration
|
|
122
|
+
console.log('\n--- Environment Analysis ---');
|
|
123
|
+
|
|
124
|
+
if (checkCommand('claude')) {
|
|
125
|
+
console.log('✅ Claude Code detected.');
|
|
126
|
+
writeIfNotExists(files.claudeConfig, protocolContent, 'Claude Configuration');
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (checkCommand('gemini')) {
|
|
130
|
+
console.log('✅ Gemini CLI detected.');
|
|
131
|
+
writeIfNotExists(files.geminiConfig, protocolContent, 'Gemini Configuration');
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if (checkCommand('codex')) {
|
|
135
|
+
console.log('✅ Codex AI detected.');
|
|
136
|
+
writeIfNotExists(files.codexHooks, codexHooksContent, 'Codex AI Hooks');
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Cursor/Windsurf (always recommended)
|
|
140
|
+
writeIfNotExists(files.cursorRules, protocolContent, 'Cursor/Windsurf Rules');
|
|
141
|
+
|
|
142
|
+
console.log('\n✅ Setup completed successfully!');
|
|
143
|
+
console.log('💡 Next steps:');
|
|
144
|
+
console.log(' 1. If using Claude Code, start it: it will read CLAUDE.md.');
|
|
145
|
+
console.log(' 2. If using Gemini CLI, commands will use GEMINI.md.');
|
|
146
|
+
console.log(' 3. If using Codex, session hooks will inject the protocol.');
|
|
147
|
+
console.log(' 4. Start analyzing the codebase following ai_docs/audit/audit_plan.md.');
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const { execSync } = require('child_process');
|
|
4
|
+
|
|
5
|
+
function checkCommand(cmd) {
|
|
6
|
+
try {
|
|
7
|
+
execSync(`${cmd} --version`, { stdio: 'ignore' });
|
|
8
|
+
return true;
|
|
9
|
+
} catch (e) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
console.log('\n--- Agentic SDLC Skill Discovery ---');
|
|
15
|
+
|
|
16
|
+
const agents = [
|
|
17
|
+
{ name: 'Claude Code', cmd: 'claude' },
|
|
18
|
+
{ name: 'Gemini CLI', cmd: 'gemini' },
|
|
19
|
+
{ name: 'Codex AI', cmd: 'codex' }
|
|
20
|
+
];
|
|
21
|
+
|
|
22
|
+
let detected = false;
|
|
23
|
+
agents.forEach(agent => {
|
|
24
|
+
if (checkCommand(agent.cmd)) {
|
|
25
|
+
console.log(`✅ Detected: ${agent.name}`);
|
|
26
|
+
detected = true;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
if (!detected) {
|
|
31
|
+
console.log('ℹ️ No specific AI CLI detected globally, but you can still use the skill.');
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
console.log('\nTo initialize a project with the SDLC protocol, run:');
|
|
35
|
+
console.log('👉 npx agentic-sdlc-init');
|
|
36
|
+
console.log('------------------------------------\n');
|
|
@@ -1,63 +1,67 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: agentic-sdlc
|
|
3
|
-
description: Protocollo SDLC "Documentation-First". Utilizzare per gestire lo sviluppo di nuove feature, eseguire l'audit di progetti esistenti e mantenere rigorosamente aggiornata la documentazione tecnica prima, durante e dopo l'implementazione del codice.
|
|
4
|
-
author: Antonio Pinto (https://github.com/Antoneeo)
|
|
5
|
-
copyright: © 2026 Antonio Pinto
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Agentic SDLC
|
|
9
|
-
|
|
10
|
-
Questa skill implementa un workflow rigoroso per lo sviluppo software, assicurando che la documentazione preceda sempre l'implementazione (Documentation-First).
|
|
11
|
-
|
|
12
|
-
Realizzata da **Antonio Pinto** (https://github.com/Antoneeo).
|
|
13
|
-
|
|
14
|
-
## Workflow Operativo
|
|
15
|
-
|
|
16
|
-
###
|
|
17
|
-
Prima di rispondere a qualsiasi richiesta operativa, verifica
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
- `ai_docs/
|
|
31
|
-
- `#
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
|
|
1
|
+
---
|
|
2
|
+
name: agentic-sdlc
|
|
3
|
+
description: Protocollo SDLC "Documentation-First" con integrazione opzionale devPNT. Utilizzare per gestire lo sviluppo di nuove feature, eseguire l'audit di progetti esistenti e mantenere rigorosamente aggiornata la documentazione tecnica prima, durante e dopo l'implementazione del codice.
|
|
4
|
+
author: Antonio Pinto (https://github.com/Antoneeo)
|
|
5
|
+
copyright: © 2026 Antonio Pinto
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Agentic SDLC (Hybrid Edition)
|
|
9
|
+
|
|
10
|
+
Questa skill implementa un workflow rigoroso per lo sviluppo software, assicurando che la documentazione preceda sempre l'implementazione (Documentation-First). Se rileva la presenza del server MCP **devPNT**, potenzia il workflow utilizzando il database per la governance e i piani gerarchici.
|
|
11
|
+
|
|
12
|
+
Realizzata da **Antonio Pinto** (https://github.com/Antoneeo).
|
|
13
|
+
|
|
14
|
+
## Workflow Operativo
|
|
15
|
+
|
|
16
|
+
### 0. Fase di Discovery (Ambiente)
|
|
17
|
+
Prima di rispondere a qualsiasi richiesta operativa, verifica la disponibilità dei tool `devpnt_*`.
|
|
18
|
+
- **MODALITÀ HYBRID (devPNT presente):** Delega la gestione dei piani (Master/Action) e del versionamento degli artefatti (`D-UC`, `P-TM`, `E-ISP`, `E-TDD`) a devPNT. Usa la cartella `ai_docs/` per salvare le versioni Markdown ("shadow-copy") dei documenti per garantire visibilità e compatibilità.
|
|
19
|
+
- **MODALITÀ STANDALONE (devPNT assente):** Gestisci tutto via filesystem in `ai_docs/`. In caso di progetti complessi, suggerisci l'adozione di devPNT per una governance avanzata.
|
|
20
|
+
|
|
21
|
+
### 1. Fase di Audit e Allineamento
|
|
22
|
+
Verifica lo stato della documentazione del progetto.
|
|
23
|
+
- Controlla la presenza di `ai_docs/audit/handoff.md`. Se esiste, leggilo per riprendere il contesto dell'ultima sessione.
|
|
24
|
+
- Controlla l'esistenza della cartella `ai_docs/`.
|
|
25
|
+
- Se `ai_docs/` non esiste o mancano i documenti fondamentali, non procedere con un'analisi dell'intero progetto in un solo colpo. Esegui invece un'analisi strutturata in step:
|
|
26
|
+
1. **Mappatura:** Crea un file di tracciamento (es. `ai_docs/audit/audit_plan.md`) elencando le macro-directory e i file chiave da analizzare. Se in modalità **Hybrid**, puoi usare `devpnt_kl_init_scope` per generare la mappatura iniziale.
|
|
27
|
+
2. **Stato dell'Analisi:** Accanto a ogni elemento nel piano, indica lo stato: `[PENDING]`, `[ANALYZED]`, oppure `[SKIPPED]` (con relativa motivazione, es. "file generato", "asset statico").
|
|
28
|
+
3. **Esecuzione a Lotti (Batching):** Analizza la codebase seguendo l'ordine del file di piano, aggiornando lo stato man mano. Se il progetto è grande, esegui l'analisi a blocchi per evitare di saturare la memoria contestuale, chiedendo conferma all'utente tra un blocco e l'altro se necessario.
|
|
29
|
+
4. **Creazione Documenti:** Sulla base dei risultati dell'audit, compila i documenti fondamentali rispettando i seguenti formati:
|
|
30
|
+
- `ai_docs/strategic/architecture.md`: Deve seguire questa struttura:
|
|
31
|
+
- `# Architettura del Progetto`
|
|
32
|
+
- `## Stack Tecnologico`
|
|
33
|
+
- `## Struttura delle Directory`
|
|
34
|
+
- `## Pattern Architetturali`
|
|
35
|
+
- `ai_docs/strategic/existing_features.md`: Deve seguire questa struttura:
|
|
36
|
+
- `# Funzionalità Esistenti`
|
|
37
|
+
- Elenco puntato nel formato: `- [ID] **Nome Feature**: Descrizione`
|
|
38
|
+
- `ai_docs/strategic/features_history.md`: Deve essere una tabella Markdown con le seguenti colonne: `| ID | Nome Feature | Stato | Data Inizio | Data Fine | Doc. Analisi | Note |`. Gli stati ammessi sono `[PLANNED]`, `[IN_PROGRESS]`, `[COMPLETED]`.
|
|
39
|
+
|
|
40
|
+
### 2. Fase di Analisi della Richiesta
|
|
41
|
+
Per ogni nuova feature richiesta dall'utente:
|
|
42
|
+
- **Hybrid:** Crea un nodo nel Master Plan e definisci l'Action Plan tramite devPNT. Salva i documenti di design (`D-UC`, `P-TM`, `E-ISP`, `E-TDD`) nel Database e crea contemporaneamente il file Markdown in `ai_docs/solutions/ANALYSIS_[nome_feature].md`.
|
|
43
|
+
- **Standalone:** Crea `ai_docs/solutions/ANALYSIS_[nome_feature].md`. Il documento deve obbligatoriamente seguire questa struttura:
|
|
44
|
+
- `# Analisi della Feature: [Nome Feature]`
|
|
45
|
+
- `## Obiettivo` (Cosa si vuole ottenere e quali problemi risolve)
|
|
46
|
+
- `## Impatto` (Modifiche ai file esistenti, performance, nuove dipendenze)
|
|
47
|
+
- `## Piano d'Azione` (Elenco di task con checkbox `[ ]`)
|
|
48
|
+
- `## Strategia di Test` (Test unitari AAA, test d'integrazione, esempi)
|
|
49
|
+
- In entrambe le modalità, aggiungi la nuova feature in `ai_docs/strategic/features_history.md` con stato `[PLANNED]`.
|
|
50
|
+
|
|
51
|
+
### 3. Fase di Sviluppo e Test
|
|
52
|
+
Solo dopo aver completato la Fase 2:
|
|
53
|
+
1. Aggiorna lo stato della feature in `features_history.md` a `[IN_PROGRESS]`.
|
|
54
|
+
2. Implementa il codice in modo chirurgico seguendo il piano definito. **Importante:** Per ogni file o macro-directory modificata o creata durante lo sviluppo, aggiorna `ai_docs/audit/audit_plan.md` reimpostando (o aggiungendo) il suo stato a `[PENDING]`.
|
|
55
|
+
3. **Obbligatorio:** Scrivi i test automatici seguendo il pattern **AAA (Arrange, Act, Assert)**.
|
|
56
|
+
4. Esegui i test. Se falliscono, correggi il codice e riesegui. **Se i test falliscono per più di 3 volte consecutive, fermati e chiedi istruzioni all'utente.**
|
|
57
|
+
|
|
58
|
+
### 4. Fase di Chiusura
|
|
59
|
+
A completamento della feature (test passati con Exit Code 0):
|
|
60
|
+
- **Hybrid:** Se la feature ha implicazioni di design, proponi un **ADR** tramite devPNT e aggiorna il Knowledge Layer (KL).
|
|
61
|
+
- **Standalone:** Rivedi gli elementi contrassegnati come `[PENDING]` in `ai_docs/audit/audit_plan.md` per estrarre eventuali novità strutturali. Aggiorna `architecture.md` e `existing_features.md` in `ai_docs/strategic/` se necessario.
|
|
62
|
+
- Riporta lo stato dei file appena rivisti in `ai_docs/audit/audit_plan.md` a `[ANALYZED]`.
|
|
63
|
+
- Aggiorna `features_history.md` impostando lo stato a `[COMPLETED]`.
|
|
64
|
+
|
|
65
|
+
### 5. Gestione delle Sessioni (Handoff)
|
|
66
|
+
Quando viene richiesto di mettere in pausa il lavoro o di chiudere la sessione:
|
|
67
|
+
- Aggiorna (o crea) il file `ai_docs/audit/handoff.md` descrivendo esattamente a che punto ti trovi (es. "Sto lavorando al file X", "L'ultimo test fallito è Y", "Il prossimo passo è Z"). Questo file serve per preservare il tuo contesto di ragionamento.
|