@warnyin/sdlc 0.13.0 → 0.14.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/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.14.0 (2026-09-19)
4
+
5
+ - **Feature (init)**: `kimi` (Kimi Code CLI) is now a supported tool. Selecting or detecting it
6
+ installs a dedicated `.kimi-code/AGENTS.md` — the shared rules-card plus a pointer to
7
+ `sdlc/.playbook/` — the same lite-tier treatment every non-Claude tool gets: no hooks, no
8
+ skills, no agents, just the rules-card and the validator as the enforcement floor. Detection
9
+ looks for an existing `.kimi-code/` directory, mirroring `claude`/`cursor`/`windsurf`; its
10
+ absence never blocks picking `kimi` explicitly with `--tool kimi` or `--tool all`. The file
11
+ is manifest-owned like `.cursor/rules/sdlc.mdc`: a hand-written file at that path is left
12
+ untouched and never claimed, and it is correctly pruned if a project later deselects the tool.
13
+
3
14
  ## 0.13.0 (2026-09-19)
4
15
 
5
16
  - **Feature (update notice)**: the notice that a newer version exists now **asks** instead of
package/bin/cli.mjs CHANGED
@@ -34,7 +34,7 @@ const MARKER = '<!-- sdlc:start -->';
34
34
  const OWN_PACKAGE_NAME = '@warnyin/sdlc';
35
35
 
36
36
  export const TOOLS = Object.freeze([
37
- 'claude', 'cursor', 'windsurf', 'copilot', 'cline', 'gemini', 'agents-md',
37
+ 'claude', 'cursor', 'windsurf', 'copilot', 'cline', 'gemini', 'agents-md', 'kimi',
38
38
  ]);
39
39
 
40
40
  const TEXT_EXT = new Set(['.md', '.mdc', '.mjs', '.json', '.yaml', '.yml', '.txt']);
@@ -203,6 +203,9 @@ function installToolAdapters(projectRoot, tools, ctx) {
203
203
  if (tools.includes('agents-md')) {
204
204
  appendWithMarker(projectRoot, 'AGENTS.md', renderAdapter('adapters/agents-md.md'));
205
205
  }
206
+ if (tools.includes('kimi')) {
207
+ installFile(projectRoot, path.join('.kimi-code', 'AGENTS.md'), renderAdapter('adapters/kimi.md'), ctx);
208
+ }
206
209
  }
207
210
 
208
211
  // ---------- scaffold ----------
package/bin/detect.mjs CHANGED
@@ -15,6 +15,7 @@ export const ADAPTER_PATHS = Object.freeze({
15
15
  cline: '.clinerules',
16
16
  gemini: 'GEMINI.md',
17
17
  'agents-md': 'AGENTS.md',
18
+ kimi: '.kimi-code/AGENTS.md',
18
19
  });
19
20
 
20
21
  export const TOOL_NAMES = Object.freeze({
@@ -25,6 +26,7 @@ export const TOOL_NAMES = Object.freeze({
25
26
  cline: 'Cline',
26
27
  gemini: 'Gemini CLI',
27
28
  'agents-md': 'AGENTS.md',
29
+ kimi: 'Kimi Code',
28
30
  });
29
31
 
30
32
  // A tool counts as present when the project already carries its home directory
@@ -38,6 +40,7 @@ const MARKERS = Object.freeze({
38
40
  cline: ['.clinerules'],
39
41
  gemini: ['GEMINI.md', '.gemini'],
40
42
  'agents-md': ['AGENTS.md'],
43
+ kimi: ['.kimi-code'],
41
44
  });
42
45
 
43
46
  export function detectTools(projectRoot) {
package/lib/manifest.mjs CHANGED
@@ -19,6 +19,7 @@ const SKILL_ALLOW_RE = /^\.claude\/skills\/(delta-spec-format|contract-writing|s
19
19
  const ADAPTER_ALLOW = new Set([
20
20
  '.cursor/rules/sdlc.mdc',
21
21
  '.windsurf/rules/sdlc.md',
22
+ '.kimi-code/AGENTS.md',
22
23
  ]);
23
24
 
24
25
  export function parseManifest(text) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@warnyin/sdlc",
3
- "version": "0.13.0",
3
+ "version": "0.14.0",
4
4
  "description": "Spec-driven, AI-driven SDLC framework — token-lean specs, contract-first changes, autonomous pipeline with managed hooks. Operationalizes the Day-1 'New SDLC with Vibe Coding' work process.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,4 @@
1
+ # Warnyin SDLC workflow rules
2
+ Stage playbooks: `sdlc/.playbook/` (start at README.md) — read the stage playbook before acting.
3
+
4
+ {{RULES_CARD}}