Scope
Mutating/flow commands: init, install, setup, phase, docs init-feature. They mostly use ui.* correctly, but have drift in result rendering.
Evidence
init completion:
AI DevKit project initialized successfully! ← plain ui.text, no ✔/color
Next steps:
• Review and customize templates in docs/ai/
...
• Run `ai-devkit init` again to add more environments
docs init-feature:
✔ Created 3 feature doc(s) for my-feature.
docs/ai/requirements/2026-09-22-feature-my-feature.md
docs/ai/design/2026-09-22-feature-my-feature.md
setup: ui.summary (Setup Summary) + ui.table + Host Prerequisites + Next steps sections.
Problems
init's final success line is plain text (ui.text("AI DevKit project initialized successfully!")) while phase, docs, and skill add's headline use ui.success — the biggest moment in the flow has the weakest styling. (Compounded by ui.success calls mid-flow like Created configuration file, so the ending is quieter than the steps.)
docs init-feature file list is unstyled: plain relative paths, no indent, no dim, no -> prefix — reads as accidental output next to the ✔ line above it.
- Naive pluralization:
3 feature doc(s).
setup mixes three section styles (ui.summary block, ui.table, bold-ish plain ui.text headers Host Prerequisites / Next steps) with inconsistent indenting between them.
init next-steps bullets use • with trailing \n embedded in the last ui.text string ("...environments\n") — manual spacing smuggled into content instead of a ui.breakline().
- No
--dry-run-style preview anywhere: flows print what they did, not what they will do; not required now, but result rendering should at least be consistent so a future preview can mirror it.
Expectation
- Every flow ends with a
ui.success headline (✔ AI DevKit project initialized), steps above it dim/ℹ.
- File lists as indented dim lines with a consistent prefix (
→ docs/ai/...), matching whatever per-item convention skill adopts.
- One section-header style for
setup (bold ui.text + blank line), applied to all its sections.
- Shared pluralization (
3 feature docs).
- No embedded
\n in message strings; spacing via ui.breakline().
Files: packages/cli/src/commands/init.ts (~L236–300), packages/cli/src/commands/docs.ts (~L67–86), packages/cli/src/commands/setup.ts (~L38–68), packages/cli/src/commands/phase.ts (~L69–70)
Scope
Mutating/flow commands:
init,install,setup,phase,docs init-feature. They mostly useui.*correctly, but have drift in result rendering.Evidence
initcompletion:docs init-feature:setup:ui.summary(Setup Summary) +ui.table+Host Prerequisites+Next stepssections.Problems
init's final success line is plain text (ui.text("AI DevKit project initialized successfully!")) whilephase,docs, andskill add's headline useui.success— the biggest moment in the flow has the weakest styling. (Compounded byui.successcalls mid-flow likeCreated configuration file, so the ending is quieter than the steps.)docs init-featurefile list is unstyled: plain relative paths, no indent, no dim, no->prefix — reads as accidental output next to the ✔ line above it.3 feature doc(s).setupmixes three section styles (ui.summaryblock,ui.table, bold-ish plainui.textheadersHost Prerequisites/Next steps) with inconsistent indenting between them.initnext-steps bullets use•with trailing\nembedded in the lastui.textstring ("...environments\n") — manual spacing smuggled into content instead of aui.breakline().--dry-run-style preview anywhere: flows print what they did, not what they will do; not required now, but result rendering should at least be consistent so a future preview can mirror it.Expectation
ui.successheadline (✔ AI DevKit project initialized), steps above it dim/ℹ.→ docs/ai/...), matching whatever per-item conventionskilladopts.setup(boldui.text+ blank line), applied to all its sections.3 feature docs).\nin message strings; spacing viaui.breakline().Files:
packages/cli/src/commands/init.ts(~L236–300),packages/cli/src/commands/docs.ts(~L67–86),packages/cli/src/commands/setup.ts(~L38–68),packages/cli/src/commands/phase.ts(~L69–70)