agentic-sdlc 1.0.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/.agent/ide-integration/README.md +298 -0
- package/.agent/ide-integration/aider-commands.md +40 -0
- package/.agent/ide-integration/cline-config.json +108 -0
- package/.agent/ide-integration/cursor-rules.md +63 -0
- package/.agent/ide-integration/github-copilot-instructions.md +75 -0
- package/.agent/ide-integration/vscode-commands.json +190 -0
- package/.agent/ide-integration/windsurf-cascade.md +125 -0
- package/.agent/knowledge-base/README.md +202 -0
- package/.agent/knowledge-base/architecture/.gitkeep +1 -0
- package/.agent/knowledge-base/bugs/.gitkeep +1 -0
- package/.agent/knowledge-base/features/.gitkeep +1 -0
- package/.agent/knowledge-base/index.md +202 -0
- package/.agent/knowledge-base/performance/.gitkeep +1 -0
- package/.agent/knowledge-base/platform-specific/.gitkeep +1 -0
- package/.agent/knowledge-base/security/.gitkeep +1 -0
- package/.agent/legacy/roles/designer.md +311 -0
- package/.agent/legacy/roles/dev.md +177 -0
- package/.agent/legacy/roles/devops.md +146 -0
- package/.agent/legacy/roles/orchestrator.md +339 -0
- package/.agent/legacy/roles/pm.md +120 -0
- package/.agent/legacy/roles/po.md +89 -0
- package/.agent/legacy/roles/qa.md +108 -0
- package/.agent/legacy/roles/reporter.md +70 -0
- package/.agent/legacy/roles/sa.md +118 -0
- package/.agent/legacy/roles/seca.md +112 -0
- package/.agent/legacy/roles/stakeholder.md +111 -0
- package/.agent/legacy/roles/tester.md +129 -0
- package/.agent/rules/artifacts.md +58 -0
- package/.agent/rules/git-workflow.md +65 -0
- package/.agent/rules/global.md +154 -0
- package/.agent/rules/global.md.bak +154 -0
- package/.agent/rules/knowledge-base.md +45 -0
- package/.agent/templates/Design-Verification-Report-Template.md +67 -0
- package/.agent/templates/DevOps-Plan-Template.md +90 -0
- package/.agent/templates/Development-Log-Template.md +51 -0
- package/.agent/templates/Final-Approval-Report-Template.md +82 -0
- package/.agent/templates/Final-Project-Report-Template.md +280 -0
- package/.agent/templates/Knowledge-Entry-Template.md +164 -0
- package/.agent/templates/Master-Documentation-Template.md +269 -0
- package/.agent/templates/Phase-Report-Template.md +70 -0
- package/.agent/templates/Product-Backlog-Template.md +84 -0
- package/.agent/templates/Project-Plan-Template.md +79 -0
- package/.agent/templates/Security-Review-Report-Template.md +80 -0
- package/.agent/templates/System-Design-Spec-Template.md +170 -0
- package/.agent/templates/Test-Report-Template.md +97 -0
- package/.agent/templates/UIUX-Design-Spec-Template.md +280 -0
- package/.agent/templates/definition-of-done.md +151 -0
- package/.agent/templates/incident-response.md +111 -0
- package/.agent/usage.md +653 -0
- package/.agent/workflows/auto.md +35 -0
- package/.agent/workflows/brain.md +56 -0
- package/.agent/workflows/dev.md +30 -0
- package/.agent/workflows/devops.md +28 -0
- package/.agent/workflows/kb-search.md +22 -0
- package/.agent/workflows/pm.md +42 -0
- package/.agent/workflows/po.md +21 -0
- package/.agent/workflows/qa.md +31 -0
- package/.agent/workflows/reporter.md +21 -0
- package/.agent/workflows/sa.md +51 -0
- package/.agent/workflows/seca.md +21 -0
- package/.agent/workflows/stakeholder.md +26 -0
- package/.agent/workflows/tester.md +21 -0
- package/.agent/workflows/uiux.md +38 -0
- package/.cursorrules +49 -0
- package/.env.template +10 -0
- package/.github/ISSUE_TEMPLATE/bug_report.yml +47 -0
- package/.github/ISSUE_TEMPLATE/config.yml +8 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +33 -0
- package/.github/ISSUE_TEMPLATE/security_alert.yml +28 -0
- package/.github/ISSUE_TEMPLATE/task_implementation.yml +37 -0
- package/.github/copilot-instructions.md +60 -0
- package/CHANGELOG.md +13 -0
- package/README.md +136 -0
- package/bin/cli.js +104 -0
- package/bin/commands/create.js +96 -0
- package/bin/commands/help.js +69 -0
- package/bin/commands/ide.js +116 -0
- package/bin/commands/init-kb.js +74 -0
- package/bin/commands/install.js +68 -0
- package/bin/commands/list.js +35 -0
- package/bin/graph_brain.py +86 -0
- package/bin/sync_github.py +75 -0
- package/bin/utils/args-parser.js +33 -0
- package/bin/utils/colors.js +21 -0
- package/bin/verify_neo4j.py +25 -0
- package/docs/OUTLINE.md +23 -0
- package/docs/architecture/brain.md +36 -0
- package/docs/architecture/neo4j-learning-queries.md +49 -0
- package/docs/guides/CLI-EXAMPLES.md +649 -0
- package/docs/guides/INTEGRATION-GUIDE.md +709 -0
- package/docs/guides/MCP-GUIDE.md +53 -0
- package/docs/guides/QUICK-START.md +104 -0
- package/docs/reports/comparison-leann-neo4j.md +49 -0
- package/docs/setup/github-management.md +37 -0
- package/docs/sprints/sprint-github-issues.md +36 -0
- package/docs/sprints/sprint-leann-integration.md +41 -0
- package/docs/sprints/sprint-neo4j-brain.md +38 -0
- package/package.json +16 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# TeamLifecycle SDLC System
|
|
2
|
+
|
|
3
|
+
This project uses a structured SDLC workflow with specialized roles. All instructions are in `.agent/`.
|
|
4
|
+
|
|
5
|
+
## Slash Commands (Role Shortcuts)
|
|
6
|
+
|
|
7
|
+
When user types these commands, interpret as role tags:
|
|
8
|
+
|
|
9
|
+
### Core Roles
|
|
10
|
+
- `/pm` → @PM (Project Manager)
|
|
11
|
+
- `/orchestrator` → @ORCHESTRATOR (Workflow Automation)
|
|
12
|
+
- `/po` → @PO (Product Owner)
|
|
13
|
+
- `/sa` → @SA (System Analyst)
|
|
14
|
+
- `/uiux` → @UIUX (UI/UX Designer)
|
|
15
|
+
- `/qa` → @QA (Quality Assurance)
|
|
16
|
+
- `/seca` → @SECA (Security Analyst)
|
|
17
|
+
- `/dev` → @DEV (Developer)
|
|
18
|
+
- `/devops` → @DEVOPS (DevOps Engineer)
|
|
19
|
+
- `/tester` → @TESTER (Tester)
|
|
20
|
+
- `/reporter` → @REPORTER (Reporter)
|
|
21
|
+
- `/stakeholder` → @STAKEHOLDER (Stakeholder)
|
|
22
|
+
|
|
23
|
+
### Quick Actions
|
|
24
|
+
- `/auto [requirements]` → @PM [requirements] --mode=full-auto
|
|
25
|
+
- `/semi-auto [requirements]` → @PM [requirements] --mode=semi-auto
|
|
26
|
+
- `/kb-search [query]` → Search `.agent/knowledge-base/`
|
|
27
|
+
- `/kb-add [topic]` → Create knowledge base entry
|
|
28
|
+
|
|
29
|
+
## Role Behavior
|
|
30
|
+
|
|
31
|
+
Each role has specific responsibilities defined in `.agent/workflows/[role].md`:
|
|
32
|
+
|
|
33
|
+
1. **Load role file** when command is used
|
|
34
|
+
2. **Follow role rules** strictly
|
|
35
|
+
3. **Create artifacts** in `docs/sprints/sprint-[N]/[category]/`
|
|
36
|
+
4. **Tag next roles** using @tags
|
|
37
|
+
5. **Use templates** from `.agent/templates/`
|
|
38
|
+
|
|
39
|
+
## Workflow
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
Planning → Design → Verification → Development → Testing → Reporting → Approval
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Key Files
|
|
46
|
+
|
|
47
|
+
- Global Rules: `.agent/rules/global.md`
|
|
48
|
+
- Usage Guide: `.agent/usage.md`
|
|
49
|
+
- Roles: `.agent/workflows/*.md`
|
|
50
|
+
- Templates: `.agent/templates/*.md`
|
|
51
|
+
- Knowledge Base: `.agent/knowledge-base/`
|
|
52
|
+
|
|
53
|
+
## Examples
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
/pm Build a REST API for task management
|
|
57
|
+
/auto Create a mobile app for expense tracking
|
|
58
|
+
/dev Implement JWT authentication
|
|
59
|
+
/kb-search OAuth token refresh
|
|
60
|
+
```
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
6
|
+
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- [2025-12-31] [INITIAL] Docs: Initialized project with TeamLifecycle SDLC workflow (@Antigravity)
|
|
11
|
+
- [2025-12-31] [REF-001] Refactor: Migrated project structure to native `.agent/` standard (@Antigravity)
|
|
12
|
+
- [2025-12-31] [FEAT-001] Feature: Added Jira-style task management and atomic commit rules (@Antigravity)
|
|
13
|
+
- [2025-12-31] [FEAT-002] Feature: Integrated automated changelog update requirement (@Antigravity)
|
package/README.md
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# Agentic SDLC
|
|
2
|
+
|
|
3
|
+
> Simulating a complete Software Development Lifecycle (SDLC) with specialized AI Agents.
|
|
4
|
+
|
|
5
|
+
Transform your IDE into a full SDLC team with 12 specialized AI roles, automated workflows, and knowledge management.
|
|
6
|
+
|
|
7
|
+
## ✨ Features
|
|
8
|
+
|
|
9
|
+
- 🤖 **12 AI Roles** - PM, SA, UI/UX, QA, Security, Dev, DevOps, Tester, Reporter, Stakeholder, PO, Orchestrator
|
|
10
|
+
- ⚡ **Slash Commands** - `/pm`, `/dev`, `/auto` in your IDE
|
|
11
|
+
- 🔄 **Auto Workflow** - Full automation or manual control
|
|
12
|
+
- 🧠 **Knowledge Base** - Learn from past challenges
|
|
13
|
+
- 🎨 **IDE Integration** - Cursor, Copilot, Windsurf, Cline, Aider
|
|
14
|
+
- 📚 **16 Templates** - Plans, designs, reports, documentation
|
|
15
|
+
- 🌐 **All Platforms** - Web, Mobile, Desktop, CLI, API, Embedded
|
|
16
|
+
|
|
17
|
+
## 🚀 Quick Start
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Install
|
|
21
|
+
npm install -g agentic-sdlc
|
|
22
|
+
|
|
23
|
+
# Create project
|
|
24
|
+
agentic-sdlc create my-project
|
|
25
|
+
cd my-project
|
|
26
|
+
|
|
27
|
+
# Setup IDE
|
|
28
|
+
agentic-sdlc ide cursor
|
|
29
|
+
|
|
30
|
+
# Start building (in IDE)
|
|
31
|
+
/pm Build a todo app with authentication
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**That's it!** See [Quick Start](docs/guides/QUICK-START.md) for details.
|
|
35
|
+
|
|
36
|
+
## 📖 Documentation
|
|
37
|
+
|
|
38
|
+
- **[Documentation Outline](docs/OUTLINE.md)** - Central hub for all guides
|
|
39
|
+
- **Quick Start:** [QUICK-START.md](docs/guides/QUICK-START.md) - Get started in 5 minutes
|
|
40
|
+
- **CLI Examples:** [CLI-EXAMPLES.md](docs/guides/CLI-EXAMPLES.md) - Complete usage guide
|
|
41
|
+
- **Usage Guide:** `.agent/usage.md` - Full documentation
|
|
42
|
+
- **IDE Integration:** `.agent/ide-integration/README.md`
|
|
43
|
+
|
|
44
|
+
## 🎯 Use Cases
|
|
45
|
+
|
|
46
|
+
### Solo Developer
|
|
47
|
+
```bash
|
|
48
|
+
/auto Create a SaaS platform for project management
|
|
49
|
+
# Automated workflow, complete in days
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Team Project
|
|
53
|
+
```bash
|
|
54
|
+
agentic-sdlc ide all
|
|
55
|
+
agentic-sdlc init-kb
|
|
56
|
+
# Shared workflow, consistent quality
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Existing Project
|
|
60
|
+
```bash
|
|
61
|
+
agentic-sdlc install
|
|
62
|
+
agentic-sdlc ide cursor
|
|
63
|
+
# Add SDLC to any project
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## 🔧 CLI Commands
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
agentic-sdlc install # Install in current directory
|
|
70
|
+
agentic-sdlc create <name> # Create new project
|
|
71
|
+
agentic-sdlc ide <cursor|all> # Setup IDE integration
|
|
72
|
+
agentic-sdlc init-kb # Initialize knowledge base
|
|
73
|
+
agentic-sdlc list # List templates & roles
|
|
74
|
+
agentic-sdlc --help # Show help
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## 🎨 IDE Slash Commands
|
|
78
|
+
|
|
79
|
+
After setup, use these in your IDE:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
/pm # Project Manager
|
|
83
|
+
/auto # Full automation
|
|
84
|
+
/sa # System Analyst
|
|
85
|
+
/uiux # UI/UX Designer
|
|
86
|
+
/dev # Developer
|
|
87
|
+
/devops # DevOps Engineer
|
|
88
|
+
/tester # Tester
|
|
89
|
+
/kb-search # Search knowledge base
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## 📊 Project Structure
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
my-project/
|
|
96
|
+
├── .agent/
|
|
97
|
+
│ ├── roles/ # 12 AI roles
|
|
98
|
+
│ ├── templates/ # 16 templates
|
|
99
|
+
│ ├── knowledge-base/ # Learning system
|
|
100
|
+
│ └── ide-integration/ # IDE configs
|
|
101
|
+
├── docs/sprints/ # Sprint documentation
|
|
102
|
+
├── .cursorrules # Cursor config
|
|
103
|
+
└── .github/copilot-instructions.md
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## 🌟 Examples
|
|
107
|
+
|
|
108
|
+
See [CLI-EXAMPLES.md](docs/guides/CLI-EXAMPLES.md) for:
|
|
109
|
+
- Real-world workflows
|
|
110
|
+
- Team collaboration
|
|
111
|
+
- Automation scripts
|
|
112
|
+
- Troubleshooting
|
|
113
|
+
- Pro tips
|
|
114
|
+
|
|
115
|
+
## 📦 What's Included
|
|
116
|
+
|
|
117
|
+
- **12 Roles:** Complete SDLC team
|
|
118
|
+
- **16 Templates:** All documentation needs
|
|
119
|
+
- **Knowledge Base:** Learn and improve
|
|
120
|
+
- **IDE Integration:** 5+ IDEs supported
|
|
121
|
+
- **Automation:** Full-auto or manual modes
|
|
122
|
+
- **Multi-platform:** Web, mobile, desktop, CLI, API
|
|
123
|
+
|
|
124
|
+
## 🤝 Contributing
|
|
125
|
+
|
|
126
|
+
Contributions welcome! See issues for ideas.
|
|
127
|
+
|
|
128
|
+
## 📄 License
|
|
129
|
+
|
|
130
|
+
MIT
|
|
131
|
+
|
|
132
|
+
## 🔗 Links
|
|
133
|
+
|
|
134
|
+
- **Repository:** https://github.com/truongnat/agentic-sdlc
|
|
135
|
+
- **Issues:** https://github.com/truongnat/agentic-sdlc/issues
|
|
136
|
+
- **NPM:** https://www.npmjs.com/package/agentic-sdlc
|
package/bin/cli.js
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import { fileURLToPath } from 'url';
|
|
6
|
+
import { log } from './utils/colors.js';
|
|
7
|
+
import { parseArgs } from './utils/args-parser.js';
|
|
8
|
+
import { showHelp, showVersion } from './commands/help.js';
|
|
9
|
+
import { listTemplates } from './commands/list.js';
|
|
10
|
+
import { install } from './commands/install.js';
|
|
11
|
+
import { createProject } from './commands/create.js';
|
|
12
|
+
import { setupIDE } from './commands/ide.js';
|
|
13
|
+
import { initKnowledgeBase } from './commands/init-kb.js';
|
|
14
|
+
|
|
15
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
16
|
+
const templatePath = path.join(__dirname, '../.agent');
|
|
17
|
+
|
|
18
|
+
// Package info
|
|
19
|
+
const packageJson = JSON.parse(
|
|
20
|
+
await fs.readFile(path.join(__dirname, '../package.json'), 'utf-8')
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Main CLI entry point
|
|
25
|
+
*/
|
|
26
|
+
async function main() {
|
|
27
|
+
const args = process.argv.slice(2);
|
|
28
|
+
|
|
29
|
+
// Handle no arguments
|
|
30
|
+
if (args.length === 0) {
|
|
31
|
+
showHelp(packageJson);
|
|
32
|
+
process.exit(0);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const { options, args: filteredArgs } = parseArgs(args);
|
|
36
|
+
const command = filteredArgs[0];
|
|
37
|
+
|
|
38
|
+
// Handle help flags
|
|
39
|
+
if (command === '-h' || command === '--help' || command === 'help') {
|
|
40
|
+
showHelp(packageJson);
|
|
41
|
+
process.exit(0);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Handle version flags
|
|
45
|
+
if (command === '-v' || command === '--version' || command === 'version') {
|
|
46
|
+
showVersion(packageJson);
|
|
47
|
+
process.exit(0);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Handle commands
|
|
51
|
+
switch (command) {
|
|
52
|
+
case 'install':
|
|
53
|
+
await install(templatePath, options);
|
|
54
|
+
break;
|
|
55
|
+
|
|
56
|
+
case 'create':
|
|
57
|
+
const projectName = filteredArgs[1];
|
|
58
|
+
if (!projectName) {
|
|
59
|
+
log.error('Project name is required');
|
|
60
|
+
console.log('Usage: agentic-sdlc create <project-name>');
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
await createProject(templatePath, projectName, options);
|
|
64
|
+
break;
|
|
65
|
+
|
|
66
|
+
case 'list':
|
|
67
|
+
await listTemplates(templatePath);
|
|
68
|
+
break;
|
|
69
|
+
|
|
70
|
+
case 'ide':
|
|
71
|
+
const ideName = filteredArgs[1];
|
|
72
|
+
if (!ideName) {
|
|
73
|
+
log.error('IDE name is required');
|
|
74
|
+
console.log('Usage: agentic-sdlc ide <cursor|copilot|windsurf|cline|aider|all>');
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
await setupIDE(templatePath, ideName, options);
|
|
78
|
+
break;
|
|
79
|
+
|
|
80
|
+
case 'init-kb':
|
|
81
|
+
await initKnowledgeBase(templatePath, options);
|
|
82
|
+
break;
|
|
83
|
+
|
|
84
|
+
default:
|
|
85
|
+
log.error(`Unknown command: ${command}`);
|
|
86
|
+
console.log('Run agentic-sdlc --help for usage information');
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Error handlers
|
|
92
|
+
process.on('uncaughtException', (err) => {
|
|
93
|
+
log.error('Unexpected error occurred');
|
|
94
|
+
log.error(err.message);
|
|
95
|
+
process.exit(1);
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
process.on('unhandledRejection', (err) => {
|
|
99
|
+
log.error('Unhandled promise rejection');
|
|
100
|
+
log.error(err.message);
|
|
101
|
+
process.exit(1);
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
main();
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { colors, log } from '../utils/colors.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Create new project with instructions
|
|
7
|
+
*/
|
|
8
|
+
export async function createProject(templatePath, projectName, options = {}) {
|
|
9
|
+
const startTime = Date.now();
|
|
10
|
+
const targetPath = path.join(process.cwd(), projectName);
|
|
11
|
+
|
|
12
|
+
try {
|
|
13
|
+
if (!options.quiet) log.header(`🚀 Creating Project: ${projectName}`);
|
|
14
|
+
|
|
15
|
+
// Check if project exists
|
|
16
|
+
if (await fs.pathExists(targetPath)) {
|
|
17
|
+
if (!options.force) {
|
|
18
|
+
log.error(`Directory '${projectName}' already exists`);
|
|
19
|
+
log.info('Use --force to overwrite');
|
|
20
|
+
process.exit(1);
|
|
21
|
+
} else {
|
|
22
|
+
log.warning('Overwriting existing project...');
|
|
23
|
+
await fs.remove(targetPath);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Create project directory
|
|
28
|
+
if (!options.quiet) log.step('Creating project directory...');
|
|
29
|
+
await fs.ensureDir(targetPath);
|
|
30
|
+
|
|
31
|
+
// Copy instructions
|
|
32
|
+
if (!options.quiet) log.step('Installing instructions...');
|
|
33
|
+
await fs.copy(templatePath, path.join(targetPath, '.agent'));
|
|
34
|
+
|
|
35
|
+
// Create basic project structure
|
|
36
|
+
if (!options.quiet) log.step('Setting up project structure...');
|
|
37
|
+
|
|
38
|
+
// Create docs structure
|
|
39
|
+
await fs.ensureDir(path.join(targetPath, 'docs', 'sprints', 'sprint-1', 'plans'));
|
|
40
|
+
await fs.ensureDir(path.join(targetPath, 'docs', 'sprints', 'sprint-1', 'designs'));
|
|
41
|
+
await fs.ensureDir(path.join(targetPath, 'docs', 'sprints', 'sprint-1', 'reviews'));
|
|
42
|
+
await fs.ensureDir(path.join(targetPath, 'docs', 'sprints', 'sprint-1', 'logs'));
|
|
43
|
+
await fs.ensureDir(path.join(targetPath, 'docs', 'sprints', 'sprint-1', 'tests'));
|
|
44
|
+
await fs.ensureDir(path.join(targetPath, 'docs', 'sprints', 'sprint-1', 'reports'));
|
|
45
|
+
await fs.ensureDir(path.join(targetPath, 'docs', 'global', 'reports'));
|
|
46
|
+
|
|
47
|
+
// Create package.json
|
|
48
|
+
await fs.writeJson(
|
|
49
|
+
path.join(targetPath, 'package.json'),
|
|
50
|
+
{
|
|
51
|
+
name: projectName,
|
|
52
|
+
version: '1.0.0',
|
|
53
|
+
description: 'Project created with agentic-sdlc',
|
|
54
|
+
main: 'index.js',
|
|
55
|
+
scripts: {
|
|
56
|
+
test: 'echo "Error: no test specified" && exit 1',
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
{ spaces: 2 }
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
// Create README
|
|
63
|
+
await fs.writeFile(
|
|
64
|
+
path.join(targetPath, 'README.md'),
|
|
65
|
+
`# ${projectName}\n\nProject created with agentic-sdlc.\n\n## Getting Started\n\n1. Review instructions: \`.agent/usage.md\`\n2. Setup IDE: \`agentic-sdlc ide cursor\`\n3. Start planning: \`/pm Build your project\`\n\n## Documentation\n\nAll project documentation is in \`docs/\` folder organized by sprints.\n`
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
// Create .gitignore
|
|
69
|
+
await fs.writeFile(
|
|
70
|
+
path.join(targetPath, '.gitignore'),
|
|
71
|
+
`node_modules/\n.DS_Store\n*.log\n.env\n.env.local\n.agent/\n`
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
// Success
|
|
75
|
+
if (!options.quiet) {
|
|
76
|
+
log.success('Project created successfully!');
|
|
77
|
+
console.log(`Location: ${targetPath}`);
|
|
78
|
+
console.log(`\nNext Steps:`);
|
|
79
|
+
console.log(` ${colors.cyan}cd ${projectName}${colors.reset}`);
|
|
80
|
+
console.log(' agentic-sdlc ide cursor');
|
|
81
|
+
console.log(' • Review .agent/usage.md');
|
|
82
|
+
console.log(' • Initialize git repository');
|
|
83
|
+
console.log(' • Start: /pm Build your project\n');
|
|
84
|
+
|
|
85
|
+
const duration = ((Date.now() - startTime) / 1000).toFixed(2);
|
|
86
|
+
log.info(`Completed in ${duration}s`);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
process.exit(0);
|
|
90
|
+
} catch (err) {
|
|
91
|
+
log.error('Project creation failed');
|
|
92
|
+
log.error(err.message);
|
|
93
|
+
if (options.verbose) console.error('\nStack trace:', err.stack);
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { colors } from '../utils/colors.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Display help information
|
|
5
|
+
*/
|
|
6
|
+
export function showHelp(packageJson) {
|
|
7
|
+
console.log(`
|
|
8
|
+
${colors.bright}${colors.cyan}agentic-sdlc${colors.reset} ${colors.dim}v${packageJson.version}${colors.reset}
|
|
9
|
+
|
|
10
|
+
${colors.bright}USAGE${colors.reset}
|
|
11
|
+
${colors.cyan}agentic-sdlc${colors.reset} ${colors.yellow}<command>${colors.reset} ${colors.dim}[options]${colors.reset}
|
|
12
|
+
|
|
13
|
+
${colors.bright}COMMANDS${colors.reset}
|
|
14
|
+
${colors.yellow}install${colors.reset} Install instructions into current directory
|
|
15
|
+
${colors.yellow}create${colors.reset} ${colors.dim}<name>${colors.reset} Create new project with instructions
|
|
16
|
+
${colors.yellow}list${colors.reset} List available templates and roles
|
|
17
|
+
${colors.yellow}ide${colors.reset} ${colors.dim}<ide-name>${colors.reset} Setup IDE integration (cursor, copilot, windsurf, cline, aider, all)
|
|
18
|
+
${colors.yellow}init-kb${colors.reset} Initialize knowledge base structure
|
|
19
|
+
${colors.yellow}version${colors.reset} Show version information
|
|
20
|
+
${colors.yellow}help${colors.reset} Show this help message
|
|
21
|
+
|
|
22
|
+
${colors.bright}OPTIONS${colors.reset}
|
|
23
|
+
${colors.dim}-h, --help${colors.reset} Show help
|
|
24
|
+
${colors.dim}-v, --version${colors.reset} Show version
|
|
25
|
+
${colors.dim}-f, --force${colors.reset} Force overwrite existing files
|
|
26
|
+
${colors.dim}-q, --quiet${colors.reset} Suppress output
|
|
27
|
+
${colors.dim}--verbose${colors.reset} Show detailed output
|
|
28
|
+
${colors.dim}--no-color${colors.reset} Disable colored output
|
|
29
|
+
|
|
30
|
+
${colors.bright}EXAMPLES${colors.reset}
|
|
31
|
+
${colors.dim}# Install in current directory${colors.reset}
|
|
32
|
+
${colors.cyan}agentic-sdlc${colors.reset} install
|
|
33
|
+
|
|
34
|
+
${colors.dim}# Create new project${colors.reset}
|
|
35
|
+
${colors.cyan}agentic-sdlc${colors.reset} create my-project
|
|
36
|
+
|
|
37
|
+
${colors.dim}# Setup Cursor IDE integration${colors.reset}
|
|
38
|
+
${colors.cyan}agentic-sdlc${colors.reset} ide cursor
|
|
39
|
+
|
|
40
|
+
${colors.dim}# Setup all IDE integrations${colors.reset}
|
|
41
|
+
${colors.cyan}agentic-sdlc${colors.reset} ide all
|
|
42
|
+
|
|
43
|
+
${colors.dim}# Initialize knowledge base${colors.reset}
|
|
44
|
+
${colors.cyan}agentic-sdlc${colors.reset} init-kb
|
|
45
|
+
|
|
46
|
+
${colors.dim}# List available templates${colors.reset}
|
|
47
|
+
${colors.cyan}agentic-sdlc${colors.reset} list
|
|
48
|
+
|
|
49
|
+
${colors.bright}IDE INTEGRATIONS${colors.reset}
|
|
50
|
+
${colors.dim}cursor${colors.reset} - Cursor IDE (.cursorrules)
|
|
51
|
+
${colors.dim}copilot${colors.reset} - GitHub Copilot (.github/copilot-instructions.md)
|
|
52
|
+
${colors.dim}windsurf${colors.reset} - Windsurf Cascade (.windsurfrules)
|
|
53
|
+
${colors.dim}cline${colors.reset} - Cline VS Code Extension
|
|
54
|
+
${colors.dim}aider${colors.reset} - Aider CLI (.aider.conf.yml)
|
|
55
|
+
${colors.dim}all${colors.reset} - Setup all IDE integrations
|
|
56
|
+
|
|
57
|
+
${colors.bright}DOCUMENTATION${colors.reset}
|
|
58
|
+
${colors.dim}Repository:${colors.reset} https://github.com/yourusername/template-instructions
|
|
59
|
+
${colors.dim}Issues:${colors.reset} https://github.com/yourusername/template-instructions/issues
|
|
60
|
+
`);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Display version information
|
|
65
|
+
*/
|
|
66
|
+
export function showVersion(packageJson) {
|
|
67
|
+
console.log(`${colors.cyan}agentic-sdlc${colors.reset} ${colors.bright}v${packageJson.version}${colors.reset}`);
|
|
68
|
+
console.log(`${colors.dim}${packageJson.description}${colors.reset}`);
|
|
69
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { log } from '../utils/colors.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Setup single IDE configuration
|
|
7
|
+
*/
|
|
8
|
+
async function setupSingleIDE(config, options) {
|
|
9
|
+
// Create directory if needed
|
|
10
|
+
if (config.createDir) {
|
|
11
|
+
await fs.ensureDir(config.createDir);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// Check if file exists
|
|
15
|
+
if (await fs.pathExists(config.target)) {
|
|
16
|
+
if (!options.force) {
|
|
17
|
+
log.warning(`${config.name} config already exists`);
|
|
18
|
+
log.info('Use --force to overwrite');
|
|
19
|
+
return;
|
|
20
|
+
} else {
|
|
21
|
+
log.warning(`Overwriting ${config.name} config...`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Copy config file
|
|
26
|
+
if (!options.quiet) log.step(`Installing ${config.name}...`);
|
|
27
|
+
await fs.copy(config.source, config.target);
|
|
28
|
+
if (!options.quiet) log.success(`${config.name} installed`);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Setup IDE integration
|
|
33
|
+
*/
|
|
34
|
+
export async function setupIDE(templatePath, ideName, options = {}) {
|
|
35
|
+
const startTime = Date.now();
|
|
36
|
+
const targetPath = process.cwd();
|
|
37
|
+
const ideIntegrationPath = path.join(templatePath, 'ide-integration');
|
|
38
|
+
|
|
39
|
+
try {
|
|
40
|
+
if (!options.quiet) log.header(`🔧 Setting up ${ideName.toUpperCase()} Integration`);
|
|
41
|
+
|
|
42
|
+
const ideConfigs = {
|
|
43
|
+
cursor: {
|
|
44
|
+
source: path.join(ideIntegrationPath, 'cursor-rules.md'),
|
|
45
|
+
target: path.join(targetPath, '.cursorrules'),
|
|
46
|
+
name: 'Cursor IDE'
|
|
47
|
+
},
|
|
48
|
+
copilot: {
|
|
49
|
+
source: path.join(ideIntegrationPath, 'github-copilot-instructions.md'),
|
|
50
|
+
target: path.join(targetPath, '.github', 'copilot-instructions.md'),
|
|
51
|
+
name: 'GitHub Copilot',
|
|
52
|
+
createDir: path.join(targetPath, '.github')
|
|
53
|
+
},
|
|
54
|
+
windsurf: {
|
|
55
|
+
source: path.join(ideIntegrationPath, 'windsurf-cascade.md'),
|
|
56
|
+
target: path.join(targetPath, '.windsurfrules'),
|
|
57
|
+
name: 'Windsurf Cascade'
|
|
58
|
+
},
|
|
59
|
+
cline: {
|
|
60
|
+
source: path.join(ideIntegrationPath, 'cline-config.json'),
|
|
61
|
+
target: path.join(targetPath, '.vscode', 'cline-config.json'),
|
|
62
|
+
name: 'Cline Extension',
|
|
63
|
+
createDir: path.join(targetPath, '.vscode')
|
|
64
|
+
},
|
|
65
|
+
aider: {
|
|
66
|
+
source: path.join(ideIntegrationPath, 'aider-commands.md'),
|
|
67
|
+
target: path.join(targetPath, '.aider.conf.yml'),
|
|
68
|
+
name: 'Aider CLI'
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
if (ideName === 'all') {
|
|
73
|
+
// Setup all IDEs
|
|
74
|
+
for (const [ide, config] of Object.entries(ideConfigs)) {
|
|
75
|
+
await setupSingleIDE(config, options);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (!options.quiet) {
|
|
79
|
+
log.success('All IDE integrations installed!');
|
|
80
|
+
console.log(`\nNext Steps:`);
|
|
81
|
+
console.log(' • Restart your IDE');
|
|
82
|
+
console.log(' • Type / in chat to see available commands');
|
|
83
|
+
console.log(' • Try: /pm Build a todo app\n');
|
|
84
|
+
}
|
|
85
|
+
} else {
|
|
86
|
+
// Setup single IDE
|
|
87
|
+
const config = ideConfigs[ideName];
|
|
88
|
+
if (!config) {
|
|
89
|
+
log.error(`Unknown IDE: ${ideName}`);
|
|
90
|
+
console.log(`Available: cursor, copilot, windsurf, cline, aider, all`);
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
await setupSingleIDE(config, options);
|
|
95
|
+
|
|
96
|
+
if (!options.quiet) {
|
|
97
|
+
log.success(`${config.name} integration installed!`);
|
|
98
|
+
console.log(`Location: ${config.target}`);
|
|
99
|
+
console.log(`\nNext Steps:`);
|
|
100
|
+
console.log(` • Restart ${config.name}`);
|
|
101
|
+
console.log(' • Type / in chat to see commands');
|
|
102
|
+
console.log(' • Try: /pm Build a todo app\n');
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const duration = ((Date.now() - startTime) / 1000).toFixed(2);
|
|
107
|
+
if (!options.quiet) log.info(`Completed in ${duration}s`);
|
|
108
|
+
|
|
109
|
+
process.exit(0);
|
|
110
|
+
} catch (err) {
|
|
111
|
+
log.error('IDE setup failed');
|
|
112
|
+
log.error(err.message);
|
|
113
|
+
if (options.verbose) console.error('\nStack trace:', err.stack);
|
|
114
|
+
process.exit(1);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { log } from '../utils/colors.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Initialize knowledge base structure
|
|
7
|
+
*/
|
|
8
|
+
export async function initKnowledgeBase(templatePath, options = {}) {
|
|
9
|
+
const startTime = Date.now();
|
|
10
|
+
const targetPath = path.join(process.cwd(), '.gemini', 'instructions', 'knowledge-base');
|
|
11
|
+
|
|
12
|
+
try {
|
|
13
|
+
if (!options.quiet) log.header('🧠 Initializing Knowledge Base');
|
|
14
|
+
|
|
15
|
+
// Check if already exists
|
|
16
|
+
if (await fs.pathExists(targetPath)) {
|
|
17
|
+
if (!options.force) {
|
|
18
|
+
log.warning('Knowledge base already exists');
|
|
19
|
+
log.info('Use --force to reinitialize');
|
|
20
|
+
process.exit(0);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Create directory structure
|
|
25
|
+
if (!options.quiet) log.step('Creating directory structure...');
|
|
26
|
+
|
|
27
|
+
const dirs = [
|
|
28
|
+
'bugs/critical',
|
|
29
|
+
'bugs/high',
|
|
30
|
+
'bugs/medium',
|
|
31
|
+
'bugs/low',
|
|
32
|
+
'features/authentication',
|
|
33
|
+
'features/performance',
|
|
34
|
+
'features/integration',
|
|
35
|
+
'features/ui-ux',
|
|
36
|
+
'architecture',
|
|
37
|
+
'security',
|
|
38
|
+
'performance',
|
|
39
|
+
'platform-specific/web',
|
|
40
|
+
'platform-specific/mobile',
|
|
41
|
+
'platform-specific/desktop',
|
|
42
|
+
'platform-specific/cli',
|
|
43
|
+
'platform-specific/embedded'
|
|
44
|
+
];
|
|
45
|
+
|
|
46
|
+
for (const dir of dirs) {
|
|
47
|
+
await fs.ensureDir(path.join(targetPath, dir));
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Copy README and index
|
|
51
|
+
const kbSourcePath = path.join(templatePath, 'knowledge-base');
|
|
52
|
+
await fs.copy(path.join(kbSourcePath, 'README.md'), path.join(targetPath, 'README.md'));
|
|
53
|
+
await fs.copy(path.join(kbSourcePath, 'index.md'), path.join(targetPath, 'index.md'));
|
|
54
|
+
|
|
55
|
+
if (!options.quiet) {
|
|
56
|
+
log.success('Knowledge base initialized!');
|
|
57
|
+
console.log(`Location: ${targetPath}`);
|
|
58
|
+
console.log(`\nNext Steps:`);
|
|
59
|
+
console.log(' • Read: .gemini/instructions/knowledge-base/README.md');
|
|
60
|
+
console.log(' • Use template: Knowledge-Entry-Template.md');
|
|
61
|
+
console.log(' • Search: Check index.md\n');
|
|
62
|
+
|
|
63
|
+
const duration = ((Date.now() - startTime) / 1000).toFixed(2);
|
|
64
|
+
log.info(`Completed in ${duration}s`);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
process.exit(0);
|
|
68
|
+
} catch (err) {
|
|
69
|
+
log.error('Knowledge base initialization failed');
|
|
70
|
+
log.error(err.message);
|
|
71
|
+
if (options.verbose) console.error('\nStack trace:', err.stack);
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
}
|