sdlc-workflow 1.0.1 → 1.0.2
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 +27 -8
- package/bin/cli.js +74 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# sdlc-workflow
|
|
2
2
|
|
|
3
|
-
Scaffold SDLC workflow docs and templates into your project. Works with **Cursor** and **
|
|
3
|
+
Scaffold SDLC workflow docs and templates into your project. Works with **Cursor**, **Claude**, **Antigravity**, and **Codex**.
|
|
4
4
|
|
|
5
5
|
## Flow
|
|
6
6
|
|
|
@@ -22,10 +22,17 @@ npx sdlc-workflow init
|
|
|
22
22
|
|
|
23
23
|
This creates:
|
|
24
24
|
|
|
25
|
+
**Project:**
|
|
25
26
|
- `docs/sdlc/` — SDLC docs, templates, and phase folders
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
- `.
|
|
27
|
+
- `AGENTS.md` — Antigravity, Codex (universal project guidance)
|
|
28
|
+
- `.agents/skills/sdlc-workflow/` — Codex repo skill
|
|
29
|
+
- `.cursor/rules/sdlc-workflow.mdc` — Cursor rule
|
|
30
|
+
- `.claude/CLAUDE.md` — Claude Code instructions
|
|
31
|
+
|
|
32
|
+
**Global (user home):**
|
|
33
|
+
- `~/.cursor/skills/sdlc-workflow/` — Cursor skill
|
|
34
|
+
- `~/.codex/AGENTS.md` — Codex global instructions
|
|
35
|
+
- `~/.agents/skills/sdlc-workflow/` — Codex global skill
|
|
29
36
|
|
|
30
37
|
## Generated Structure
|
|
31
38
|
|
|
@@ -58,16 +65,28 @@ docs/sdlc/
|
|
|
58
65
|
|
|
59
66
|
.cursor/rules/
|
|
60
67
|
└── sdlc-workflow.mdc # Cursor rule
|
|
68
|
+
|
|
69
|
+
AGENTS.md # Antigravity, Codex (universal)
|
|
70
|
+
.agents/skills/sdlc-workflow/ # Codex repo skill
|
|
61
71
|
```
|
|
62
72
|
|
|
73
|
+
## Use with Cursor
|
|
74
|
+
|
|
75
|
+
The rule `.cursor/rules/sdlc-workflow.mdc` activates when working with `docs/sdlc/**` or `*.md`. Global skill: `~/.cursor/skills/sdlc-workflow/`.
|
|
76
|
+
|
|
63
77
|
## Use with Claude
|
|
64
78
|
|
|
65
|
-
- **Claude Code** (project): `.claude/CLAUDE.md`
|
|
66
|
-
- **Claude.ai** (web): Copy `docs/sdlc/SDLC-WORKFLOW.md` into Custom Instructions or @ mention it
|
|
79
|
+
- **Claude Code** (project): `.claude/CLAUDE.md` — Claude loads it when you open this project.
|
|
80
|
+
- **Claude.ai** (web): Copy `docs/sdlc/SDLC-WORKFLOW.md` into Custom Instructions or @ mention it.
|
|
67
81
|
|
|
68
|
-
## Use with
|
|
82
|
+
## Use with Antigravity
|
|
83
|
+
|
|
84
|
+
`AGENTS.md` at project root — Antigravity reads it (priority: AGENTS.md → GEMINI.md). Universal format, works across agentic IDEs.
|
|
85
|
+
|
|
86
|
+
## Use with Codex
|
|
69
87
|
|
|
70
|
-
|
|
88
|
+
- **Project**: `AGENTS.md` + `.agents/skills/sdlc-workflow/`
|
|
89
|
+
- **Global**: `~/.codex/AGENTS.md` + `~/.agents/skills/sdlc-workflow/`
|
|
71
90
|
|
|
72
91
|
## Release
|
|
73
92
|
|
package/bin/cli.js
CHANGED
|
@@ -18,7 +18,7 @@ async function main() {
|
|
|
18
18
|
if (command !== "init") {
|
|
19
19
|
console.log("Usage: npx sdlc-workflow init");
|
|
20
20
|
console.log(" Scaffolds SDLC docs and templates into current project.");
|
|
21
|
-
console.log(" Installs Cursor
|
|
21
|
+
console.log(" Installs for: Cursor, Claude, Antigravity, Codex.");
|
|
22
22
|
process.exit(1);
|
|
23
23
|
}
|
|
24
24
|
|
|
@@ -29,9 +29,12 @@ async function main() {
|
|
|
29
29
|
await scaffold(cwd);
|
|
30
30
|
await installCursorSkill(home);
|
|
31
31
|
await installClaudeSkill(cwd);
|
|
32
|
+
await installAgentsMd(cwd);
|
|
33
|
+
await installCodexSkill(home);
|
|
32
34
|
console.log("\nDone.");
|
|
33
|
-
console.log(" - Project: docs/sdlc/, .cursor/rules/, .claude/");
|
|
34
|
-
console.log(" - Cursor
|
|
35
|
+
console.log(" - Project: docs/sdlc/, .cursor/rules/, .claude/, AGENTS.md, .agents/skills/");
|
|
36
|
+
console.log(" - Cursor: ~/.cursor/skills/sdlc-workflow/");
|
|
37
|
+
console.log(" - Codex: ~/.codex/AGENTS.md, ~/.agents/skills/sdlc-workflow/");
|
|
35
38
|
} catch (err) {
|
|
36
39
|
console.error("Error:", err.message);
|
|
37
40
|
process.exit(1);
|
|
@@ -69,6 +72,57 @@ async function installClaudeSkill(cwd) {
|
|
|
69
72
|
console.log(" + .claude/CLAUDE.md (Claude instructions)");
|
|
70
73
|
}
|
|
71
74
|
|
|
75
|
+
async function installAgentsMd(cwd) {
|
|
76
|
+
const agentsPath = join(cwd, "AGENTS.md");
|
|
77
|
+
const content = AGENTS_MD_CONTENT;
|
|
78
|
+
if (existsSync(agentsPath)) {
|
|
79
|
+
const existing = await readFile(agentsPath, "utf8");
|
|
80
|
+
if (existing.includes("## SDLC Workflow")) {
|
|
81
|
+
console.log(" + AGENTS.md (SDLC section already present)");
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
await writeFile(agentsPath, existing.trimEnd() + "\n\n" + content, "utf8");
|
|
85
|
+
} else {
|
|
86
|
+
await writeFile(agentsPath, content, "utf8");
|
|
87
|
+
}
|
|
88
|
+
console.log(" + AGENTS.md (Antigravity, Codex project)");
|
|
89
|
+
|
|
90
|
+
const codexSkillDir = join(cwd, ".agents", "skills", "sdlc-workflow");
|
|
91
|
+
await mkdir(codexSkillDir, { recursive: true });
|
|
92
|
+
await writeFile(join(codexSkillDir, "SKILL.md"), CURSOR_SKILL_MD, "utf8");
|
|
93
|
+
await writeFile(join(codexSkillDir, "reference.md"), CURSOR_REFERENCE_MD, "utf8");
|
|
94
|
+
console.log(" + .agents/skills/sdlc-workflow/ (Codex repo skill)");
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
async function installCodexSkill(home) {
|
|
98
|
+
const codexDir = join(home, ".codex");
|
|
99
|
+
const codexAgentsPath = join(codexDir, "AGENTS.md");
|
|
100
|
+
const sdlcContent = CLAUDE_SDLC_CONTENT;
|
|
101
|
+
await mkdir(codexDir, { recursive: true });
|
|
102
|
+
if (existsSync(codexAgentsPath)) {
|
|
103
|
+
const existing = await readFile(codexAgentsPath, "utf8");
|
|
104
|
+
if (existing.includes("## SDLC Workflow")) {
|
|
105
|
+
console.log(" + ~/.codex/AGENTS.md (SDLC section already present)");
|
|
106
|
+
} else {
|
|
107
|
+
await writeFile(
|
|
108
|
+
codexAgentsPath,
|
|
109
|
+
existing.trimEnd() + "\n\n" + sdlcContent,
|
|
110
|
+
"utf8"
|
|
111
|
+
);
|
|
112
|
+
console.log(" + ~/.codex/AGENTS.md (Codex global)");
|
|
113
|
+
}
|
|
114
|
+
} else {
|
|
115
|
+
await writeFile(codexAgentsPath, sdlcContent, "utf8");
|
|
116
|
+
console.log(" + ~/.codex/AGENTS.md (Codex global)");
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const agentsSkillDir = join(home, ".agents", "skills", "sdlc-workflow");
|
|
120
|
+
await mkdir(agentsSkillDir, { recursive: true });
|
|
121
|
+
await writeFile(join(agentsSkillDir, "SKILL.md"), CURSOR_SKILL_MD, "utf8");
|
|
122
|
+
await writeFile(join(agentsSkillDir, "reference.md"), CURSOR_REFERENCE_MD, "utf8");
|
|
123
|
+
console.log(" + ~/.agents/skills/sdlc-workflow/ (Codex global skill)");
|
|
124
|
+
}
|
|
125
|
+
|
|
72
126
|
async function scaffold(cwd) {
|
|
73
127
|
const templates = join(TEMPLATES_DIR, "project");
|
|
74
128
|
if (!existsSync(templates)) {
|
|
@@ -264,6 +318,23 @@ TC-001: [Scenario] — Precondition, Steps, Expected, Links to AC
|
|
|
264
318
|
- Senior Dev (10+ yrs): implement, Unit Test ≥90% → docs/sdlc/dev/senior-developer/
|
|
265
319
|
`;
|
|
266
320
|
|
|
321
|
+
const AGENTS_MD_CONTENT = `## SDLC Workflow
|
|
322
|
+
|
|
323
|
+
When working on requirements, features, or handoffs, follow these phases:
|
|
324
|
+
|
|
325
|
+
1. **PO** — PRD, user stories → docs/sdlc/po/
|
|
326
|
+
2. **Business BA** — FRS, process flows → docs/sdlc/ba/business/
|
|
327
|
+
3. **Architect** — ADRs, diagrams → docs/sdlc/architecture/
|
|
328
|
+
4. **Technical BA** — API specs, team breakdown → docs/sdlc/ba/technical/
|
|
329
|
+
5. **QE (docs)** — Test plan, test cases → docs/sdlc/qe/
|
|
330
|
+
6. **Dev** — After QE docs: Tech Lead (15+ yrs, tech stack, review & merge) + Senior Dev (10+ yrs, implement, Unit Test ≥90%) → docs/sdlc/dev/{role}/
|
|
331
|
+
7. **QE (testing)** — After Dev unit tests: automation + manual, sign-off
|
|
332
|
+
8. **Deploy** — Release, monitor
|
|
333
|
+
|
|
334
|
+
Flow: ... → Technical BA → QE docs → Dev → QE testing → Deploy
|
|
335
|
+
Ask "Which phase are we in?" if unclear.
|
|
336
|
+
`;
|
|
337
|
+
|
|
267
338
|
const CLAUDE_SDLC_CONTENT = `## SDLC Workflow
|
|
268
339
|
|
|
269
340
|
1. **PO** — PRD, user stories → docs/sdlc/po/
|