devlyn-cli 3.3.1 → 4.0.1

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.
Files changed (59) hide show
  1. package/AGENTS.md +8 -8
  2. package/CLAUDE.md +17 -17
  3. package/README.md +43 -30
  4. package/bin/devlyn.js +123 -105
  5. package/bin/instruction-templates.json +26 -0
  6. package/config/skills/_shared/adapters/README.md +1 -1
  7. package/config/skills/_shared/adapters/omp.md +2 -2
  8. package/config/skills/_shared/archive_run.py +2 -2
  9. package/config/skills/_shared/codex-config.md +15 -15
  10. package/config/skills/_shared/engine-doctor.sh +1 -1
  11. package/config/skills/_shared/engine-preflight.md +5 -5
  12. package/config/skills/_shared/finish-gate.py +1 -1
  13. package/config/skills/_shared/resolve-bootstrap.py +2 -2
  14. package/config/skills/_shared/runtime-principles.md +6 -6
  15. package/config/skills/_shared/spec-verify-check.py +3 -3
  16. package/config/skills/_shared/task-complete.py +1 -1
  17. package/config/skills/{devlyn:design-ui → devlyn-design-ui}/SKILL.md +1 -1
  18. package/config/skills/{devlyn:engines → devlyn-engines}/SKILL.md +37 -11
  19. package/config/skills/{devlyn:ideate → devlyn-ideate}/SKILL.md +42 -24
  20. package/config/skills/{devlyn:ideate → devlyn-ideate}/references/elicitation.md +2 -2
  21. package/config/skills/{devlyn:ideate → devlyn-ideate}/references/from-spec-mode.md +2 -2
  22. package/config/skills/{devlyn:ideate → devlyn-ideate}/references/project-mode.md +5 -5
  23. package/config/skills/{devlyn:ideate → devlyn-ideate}/references/spec-template.md +1 -1
  24. package/config/skills/{devlyn:queue → devlyn-queue}/SKILL.md +39 -16
  25. package/config/skills/devlyn-queue/scripts/append.py +94 -0
  26. package/config/skills/{devlyn:resolve → devlyn-resolve}/SKILL.md +38 -19
  27. package/config/skills/{devlyn:resolve → devlyn-resolve}/references/free-form-mode.md +3 -3
  28. package/config/skills/{devlyn:resolve → devlyn-resolve}/references/outer-loop.md +1 -1
  29. package/config/skills/{devlyn:resolve → devlyn-resolve}/references/state-schema.md +1 -1
  30. package/config/skills/{devlyn:resolve → devlyn-resolve}/references/task-completion.md +9 -2
  31. package/config/templates/prompt-templates.md +2 -2
  32. package/optional-skills/better-auth-setup/SKILL.md +24 -18
  33. package/optional-skills/{devlyn:pencil-pull → devlyn-pencil-pull}/SKILL.md +1 -1
  34. package/optional-skills/{devlyn:pencil-push → devlyn-pencil-push}/SKILL.md +1 -1
  35. package/optional-skills/{devlyn:reap → devlyn-reap}/SKILL.md +36 -5
  36. package/optional-skills/{devlyn:reap → devlyn-reap}/scripts/reap.sh +1 -1
  37. package/optional-skills/{devlyn:reap → devlyn-reap}/scripts/scan.sh +1 -1
  38. package/optional-skills/dokkit/COMMANDS.md +4 -4
  39. package/optional-skills/dokkit/EXPORT.md +3 -3
  40. package/optional-skills/dokkit/FILLING.md +4 -4
  41. package/optional-skills/dokkit/IMAGE-SOURCING.md +2 -2
  42. package/optional-skills/dokkit/INGESTION.md +3 -3
  43. package/optional-skills/dokkit/PIPELINE.md +5 -4
  44. package/optional-skills/dokkit/SKILL.md +35 -5
  45. package/optional-skills/dokkit/STATE.md +1 -1
  46. package/optional-skills/dokkit/references/image-opportunity-heuristics.md +1 -1
  47. package/optional-skills/generate-skill/REFERENCE.md +10 -13
  48. package/optional-skills/generate-skill/SKILL.md +13 -5
  49. package/package.json +3 -1
  50. /package/config/skills/{devlyn:ideate → devlyn-ideate}/references/templates/decision.md +0 -0
  51. /package/config/skills/{devlyn:ideate → devlyn-ideate}/references/templates/roadmap.md +0 -0
  52. /package/config/skills/{devlyn:ideate → devlyn-ideate}/references/templates/vision.md +0 -0
  53. /package/config/skills/{devlyn:resolve → devlyn-resolve}/references/phases/build-gate.md +0 -0
  54. /package/config/skills/{devlyn:resolve → devlyn-resolve}/references/phases/cleanup.md +0 -0
  55. /package/config/skills/{devlyn:resolve → devlyn-resolve}/references/phases/implement.md +0 -0
  56. /package/config/skills/{devlyn:resolve → devlyn-resolve}/references/phases/plan.md +0 -0
  57. /package/config/skills/{devlyn:resolve → devlyn-resolve}/references/phases/probe-derive.md +0 -0
  58. /package/config/skills/{devlyn:resolve → devlyn-resolve}/references/phases/surface-close.md +0 -0
  59. /package/config/skills/{devlyn:resolve → devlyn-resolve}/references/phases/verify.md +0 -0
@@ -13,15 +13,45 @@ description: >
13
13
  user-invocable: true
14
14
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep, Agent
15
15
  argument-hint: "<template_path> <sources_folder> | improve [instruction]"
16
- context:
17
- - type: file
18
- path: ${CLAUDE_SKILL_DIR}/PIPELINE.md
19
16
  ---
20
17
 
21
18
  # Dokkit — One-Command Document Filling
22
19
 
23
20
  Source folder + template → finished document. Fully automatic, iterates until perfect.
24
21
 
22
+ Resolve bundled resources from the SKILL.md loaded for this invocation.
23
+
24
+ Reader-rendered directory hint:
25
+ ```text
26
+ ${CLAUDE_SKILL_DIR}
27
+ ```
28
+
29
+ Treat the hint as literal path data, never shell code. If the reader
30
+ replaced it with an absolute directory, use that directory. Otherwise
31
+ use the filesystem path or base directory reported for this loaded
32
+ SKILL.md. Resolve virtual URIs through the reader's native filesystem
33
+ mapping. If available source locations name different directories,
34
+ stop.
35
+
36
+ Bind DEVLYN_SKILL_DIR to that absolute directory. Do not obtain this
37
+ binding from an environment variable, cwd, or another installation.
38
+ Verify its SKILL.md before proceeding. Missing or conflicting source
39
+ identity is BLOCKED:skill-source-unresolved; include the failed path
40
+ when known.
41
+
42
+ Resolve bundled references against this directory. These bindings are
43
+ workflow values: establish them explicitly using each tool or shell's
44
+ literal-path rules, and include their absolute values in every fresh
45
+ worker's prompt, telling it to set them from those values, never from
46
+ its inherited environment. Do not rely on shell state surviving between
47
+ calls.
48
+
49
+ Read PIPELINE.md from this bound directory before executing the
50
+ workflow. Bundled Markdown, references, and scripts use this same
51
+ directory. Project data under .dokkit remains project-relative.
52
+ Pass the absolute binding and required resource paths explicitly
53
+ to every worker.
54
+
25
55
  ## Usage
26
56
 
27
57
  ```
@@ -113,7 +143,7 @@ These rules prevent the font corruption issues seen in previous versions:
113
143
 
114
144
  **Never write inline Gemini API calls for image generation.** Always use the provided script:
115
145
  ```bash
116
- python ${CLAUDE_SKILL_DIR}/scripts/source_images.py generate \
146
+ python "$DEVLYN_SKILL_DIR/scripts/source_images.py" generate \
117
147
  --prompt "<prompt>" --preset <preset> --output-dir .dokkit/images/ \
118
148
  --project-dir . --lang ko
119
149
  ```
@@ -173,7 +203,7 @@ display_h = int(actual_h * scale)
173
203
 
174
204
  | File | Purpose | Used By |
175
205
  |------|---------|---------|
176
- | `PIPELINE.md` | Detailed pipeline steps (auto-loaded) | Orchestrator |
206
+ | `PIPELINE.md` | Detailed pipeline steps (read before execution) | Orchestrator |
177
207
  | `STATE.md` | State schema and management | All agents |
178
208
  | `INGESTION.md` | Source file parsing | Ingestor |
179
209
  | `ANALYSIS.md` | Field detection, structure mapping | Analyzer |
@@ -33,7 +33,7 @@ After any mutation:
33
33
  1. Read current state.json (avoid overwriting concurrent changes)
34
34
  2. Update only the relevant fields
35
35
  3. Write the full state back
36
- 4. Validate: `python .claude/skills/dokkit/scripts/validate_state.py .dokkit/state.json`
36
+ 4. Validate: `python "$DEVLYN_SKILL_DIR/scripts/validate_state.py" .dokkit/state.json`
37
37
 
38
38
  ## State Transitions
39
39
 
@@ -113,7 +113,7 @@ Each opportunity is added to the field's `image_opportunities` array:
113
113
  - `insertion_point.strategy`: Always `"after_paragraph"` for section content
114
114
  - `insertion_point.anchor_text`: Distinctive Korean phrase from the paragraph (used by filler to locate insertion point)
115
115
  - `generation_prompt`: English prompt for AI image generation
116
- - `preset`: Maps to `.claude/skills/dokkit/scripts/source_images.py` preset parameter
116
+ - `preset`: Maps to the bundled `scripts/source_images.py` preset parameter
117
117
  - `content_type`: One of `flowchart`, `diagram`, `data`, `concept`, `infographic`
118
118
  - `rationale`: Brief explanation of why an image helps here
119
119
  - `dimensions`: Default size — filler may adjust based on content_type
@@ -46,7 +46,6 @@ Complete catalog of YAML frontmatter fields for Claude Code skill files (`SKILL.
46
46
  | `argument-hint` | string | none | Placeholder shown to user (e.g., `"[file path]"`) |
47
47
  | `user-invocable` | boolean | `true` | Whether users can trigger via `/skill-name` |
48
48
  | `disable-model-invocation` | boolean | `false` | If `true`, Claude cannot proactively trigger the skill |
49
- | `context` | list | none | Files to inject into context when skill activates |
50
49
  | `agent` | object | none | Run skill as a subagent with its own context |
51
50
  | `model` | string | inherited | Override model (`opus`, `sonnet`, `haiku`) |
52
51
  | `hooks` | object | none | Shell commands to run on skill lifecycle events |
@@ -62,20 +61,15 @@ allowed-tools: Read, Bash(npm test *), Bash(npx *)
62
61
 
63
62
  Wildcard `*` matches any arguments. Without a glob, Bash runs any command.
64
63
 
65
- ### `context` Field
64
+ ### Supporting files
66
65
 
67
- Inject files into the skill's context automatically:
66
+ Read supporting files explicitly from the skill body:
68
67
 
69
- ```yaml
70
- context:
71
- - type: file
72
- path: ${CLAUDE_SKILL_DIR}/PATTERNS.md
73
- - type: file
74
- path: ./CLAUDE.md
68
+ ```text
69
+ Before proceeding, read PATTERNS.md relative to the directory
70
+ containing this loaded SKILL.md.
75
71
  ```
76
72
 
77
- Use `${CLAUDE_SKILL_DIR}` for paths relative to the skill directory.
78
-
79
73
  ### `agent` Field
80
74
 
81
75
  Run the skill as an isolated subagent:
@@ -102,7 +96,10 @@ hooks:
102
96
 
103
97
  ## String Substitutions
104
98
 
105
- These placeholders are replaced at runtime:
99
+ Claude Code replaces these placeholders when rendering a skill.
100
+ They are reader substitutions, not portable shell environment
101
+ variables. Portable resource references use the selected skill
102
+ directory and relative paths.
106
103
 
107
104
  | Placeholder | Replaced With |
108
105
  |---|---|
@@ -116,7 +113,7 @@ These placeholders are replaced at runtime:
116
113
  ```markdown
117
114
  Parse `$ARGUMENTS` for the file path.
118
115
  If `$1` is empty, ask the user for a target file.
119
- Read the config from `${CLAUDE_SKILL_DIR}/config.yaml`.
116
+ Read config.yaml relative to this loaded skill's directory.
120
117
  ```
121
118
 
122
119
  ---
@@ -15,6 +15,13 @@ argument-hint: "[skill description or name]"
15
15
  Create production-quality Claude Code skills with correct frontmatter, structured workflows, and Claude 4.6 prompt patterns.
16
16
 
17
17
  Reference files in this skill directory:
18
+
19
+ Resolve the bundled reference paths below against the directory
20
+ containing the SKILL.md loaded for this invocation, using its opened
21
+ path, reader-reported base directory, or native URI mapping. Never
22
+ resolve them against cwd or another installation. Missing source
23
+ identity is BLOCKED:skill-source-unresolved.
24
+
18
25
  - `REFERENCE.md` — Complete frontmatter field catalog and validation rules
19
26
  - `PROMPT-PATTERNS.md` — Claude 4.6 prompt engineering patterns for skill bodies
20
27
  - `CHECKLIST.md` — Quality verification checklist
@@ -50,11 +57,13 @@ Estimate the total line count for the skill content:
50
57
  Rules for reference files:
51
58
  - One level deep only (no nested references)
52
59
  - Add a table of contents if a reference file exceeds 100 lines
53
- - Reference files use `${CLAUDE_SKILL_DIR}/FILENAME.md` for paths
60
+ - Reference files use paths relative to the generated SKILL.md, with
61
+ an explicit instruction to resolve them against the loaded skill
62
+ directory.
54
63
 
55
64
  ### Step 3: Write Frontmatter
56
65
 
57
- Read `${CLAUDE_SKILL_DIR}/REFERENCE.md` for the complete field catalog.
66
+ Read `REFERENCE.md` for the complete field catalog.
58
67
 
59
68
  Apply these rules:
60
69
  - `name`: lowercase, hyphens only, max 64 chars, no "anthropic" or "claude"
@@ -64,7 +73,7 @@ Apply these rules:
64
73
 
65
74
  ### Step 4: Write Skill Body
66
75
 
67
- Read `${CLAUDE_SKILL_DIR}/PROMPT-PATTERNS.md` for Claude 4.6 patterns.
76
+ Read `PROMPT-PATTERNS.md` for Claude 4.6 patterns.
68
77
 
69
78
  Structure the body in this order:
70
79
  1. **Title and purpose** — One-line summary of what the skill does and why
@@ -111,7 +120,7 @@ For multi-file skills, create reference files:
111
120
 
112
121
  ### Step 7: Validate
113
122
 
114
- Read `${CLAUDE_SKILL_DIR}/CHECKLIST.md` and verify the generated skill against every item.
123
+ Read `CHECKLIST.md` and verify the generated skill against every item.
115
124
 
116
125
  Fix any issues before presenting the final output.
117
126
 
@@ -124,7 +133,6 @@ After generating the skill, present:
124
133
  3. **Test invocation** — Example command to test the skill
125
134
 
126
135
  Offer to:
127
- - Run `/devlyn:review` on the generated skill for quality assurance
128
136
  - Run `pyx-scan` if the skill will be published
129
137
 
130
138
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devlyn-cli",
3
- "version": "3.3.1",
3
+ "version": "4.0.1",
4
4
  "description": "Loop & harness engineering for AI coding agents (Claude Code, Codex, and any AGENTS.md-driven agent) — take intent to shipped, engineer-quality software hands-free with phase-gated pipelines and agent orchestration",
5
5
  "homepage": "https://github.com/fysoul17/devlyn-cli#readme",
6
6
  "bin": {
@@ -13,6 +13,8 @@
13
13
  "!config/skills/preflight-workspace/**",
14
14
  "!config/skills/devlyn:ideate-workspace",
15
15
  "!config/skills/devlyn:ideate-workspace/**",
16
+ "!config/skills/devlyn-ideate-workspace",
17
+ "!config/skills/devlyn-ideate-workspace/**",
16
18
  "!config/skills/devlyn:auto-resolve-workspace",
17
19
  "!config/skills/devlyn:auto-resolve-workspace/**",
18
20
  "!config/skills/roadmap-archival-workspace",