dino-spec 0.1.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.
Files changed (92) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +243 -0
  3. package/bin/dino.js +3 -0
  4. package/dist/cli/index.d.ts +3 -0
  5. package/dist/cli/index.d.ts.map +1 -0
  6. package/dist/cli/index.js +114 -0
  7. package/dist/cli/index.js.map +1 -0
  8. package/dist/commands/active.d.ts +5 -0
  9. package/dist/commands/active.d.ts.map +1 -0
  10. package/dist/commands/active.js +85 -0
  11. package/dist/commands/active.js.map +1 -0
  12. package/dist/commands/archive.d.ts +9 -0
  13. package/dist/commands/archive.d.ts.map +1 -0
  14. package/dist/commands/archive.js +77 -0
  15. package/dist/commands/archive.js.map +1 -0
  16. package/dist/commands/init.d.ts +9 -0
  17. package/dist/commands/init.d.ts.map +1 -0
  18. package/dist/commands/init.js +91 -0
  19. package/dist/commands/init.js.map +1 -0
  20. package/dist/commands/list.d.ts +12 -0
  21. package/dist/commands/list.d.ts.map +1 -0
  22. package/dist/commands/list.js +169 -0
  23. package/dist/commands/list.js.map +1 -0
  24. package/dist/commands/skill.d.ts +17 -0
  25. package/dist/commands/skill.d.ts.map +1 -0
  26. package/dist/commands/skill.js +143 -0
  27. package/dist/commands/skill.js.map +1 -0
  28. package/dist/commands/status.d.ts +9 -0
  29. package/dist/commands/status.d.ts.map +1 -0
  30. package/dist/commands/status.js +96 -0
  31. package/dist/commands/status.js.map +1 -0
  32. package/dist/commands/update.d.ts +9 -0
  33. package/dist/commands/update.d.ts.map +1 -0
  34. package/dist/commands/update.js +64 -0
  35. package/dist/commands/update.js.map +1 -0
  36. package/dist/commands/view.d.ts +5 -0
  37. package/dist/commands/view.d.ts.map +1 -0
  38. package/dist/commands/view.js +177 -0
  39. package/dist/commands/view.js.map +1 -0
  40. package/dist/core/config.d.ts +51 -0
  41. package/dist/core/config.d.ts.map +1 -0
  42. package/dist/core/config.js +58 -0
  43. package/dist/core/config.js.map +1 -0
  44. package/dist/core/skills/index.d.ts +7 -0
  45. package/dist/core/skills/index.d.ts.map +1 -0
  46. package/dist/core/skills/index.js +6 -0
  47. package/dist/core/skills/index.js.map +1 -0
  48. package/dist/core/skills/loader.d.ts +34 -0
  49. package/dist/core/skills/loader.d.ts.map +1 -0
  50. package/dist/core/skills/loader.js +110 -0
  51. package/dist/core/skills/loader.js.map +1 -0
  52. package/dist/core/skills/registry.d.ts +31 -0
  53. package/dist/core/skills/registry.d.ts.map +1 -0
  54. package/dist/core/skills/registry.js +150 -0
  55. package/dist/core/skills/registry.js.map +1 -0
  56. package/dist/core/skills/types.d.ts +33 -0
  57. package/dist/core/skills/types.d.ts.map +1 -0
  58. package/dist/core/skills/types.js +5 -0
  59. package/dist/core/skills/types.js.map +1 -0
  60. package/dist/core/templates/dna-template.d.ts +5 -0
  61. package/dist/core/templates/dna-template.d.ts.map +1 -0
  62. package/dist/core/templates/dna-template.js +52 -0
  63. package/dist/core/templates/dna-template.js.map +1 -0
  64. package/dist/core/templates/index.d.ts +8 -0
  65. package/dist/core/templates/index.d.ts.map +1 -0
  66. package/dist/core/templates/index.js +8 -0
  67. package/dist/core/templates/index.js.map +1 -0
  68. package/dist/core/templates/rules-template.d.ts +5 -0
  69. package/dist/core/templates/rules-template.d.ts.map +1 -0
  70. package/dist/core/templates/rules-template.js +71 -0
  71. package/dist/core/templates/rules-template.js.map +1 -0
  72. package/dist/core/templates/skill-template.d.ts +5 -0
  73. package/dist/core/templates/skill-template.d.ts.map +1 -0
  74. package/dist/core/templates/skill-template.js +63 -0
  75. package/dist/core/templates/skill-template.js.map +1 -0
  76. package/dist/core/templates/slash-commands.d.ts +5 -0
  77. package/dist/core/templates/slash-commands.d.ts.map +1 -0
  78. package/dist/core/templates/slash-commands.js +753 -0
  79. package/dist/core/templates/slash-commands.js.map +1 -0
  80. package/dist/index.d.ts +7 -0
  81. package/dist/index.d.ts.map +1 -0
  82. package/dist/index.js +7 -0
  83. package/dist/index.js.map +1 -0
  84. package/dist/utils/ascii-art.d.ts +38 -0
  85. package/dist/utils/ascii-art.d.ts.map +1 -0
  86. package/dist/utils/ascii-art.js +66 -0
  87. package/dist/utils/ascii-art.js.map +1 -0
  88. package/dist/utils/file-system.d.ts +67 -0
  89. package/dist/utils/file-system.d.ts.map +1 -0
  90. package/dist/utils/file-system.js +177 -0
  91. package/dist/utils/file-system.js.map +1 -0
  92. package/package.json +68 -0
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Skill Registry - manages skill discovery and installation
3
+ */
4
+ import { join } from 'path';
5
+ import { FileSystem } from '../../utils/file-system.js';
6
+ import { CLAUDE_DIR_NAME } from '../config.js';
7
+ // Default registry URL (can be customized)
8
+ const DEFAULT_REGISTRY_URL = 'https://raw.githubusercontent.com/dino-spec/skills-registry/main/registry.json';
9
+ export class SkillRegistry {
10
+ registryUrl;
11
+ cache = new Map();
12
+ constructor(registryUrl = DEFAULT_REGISTRY_URL) {
13
+ this.registryUrl = registryUrl;
14
+ }
15
+ /**
16
+ * List all installed skills in the project
17
+ */
18
+ async listInstalled(projectPath) {
19
+ const skills = [];
20
+ const skillsDir = join(projectPath, CLAUDE_DIR_NAME, 'skills');
21
+ if (!await FileSystem.exists(skillsDir)) {
22
+ return skills;
23
+ }
24
+ const dirs = await FileSystem.listDirectory(skillsDir);
25
+ for (const dir of dirs) {
26
+ const skillPath = join(skillsDir, dir);
27
+ if (!await FileSystem.isDirectory(skillPath))
28
+ continue;
29
+ const skillFile = join(skillPath, 'SKILL.md');
30
+ const content = await FileSystem.readFileSafe(skillFile);
31
+ if (content) {
32
+ const metadata = parseSkillMetadata(content);
33
+ if (metadata) {
34
+ skills.push({
35
+ id: dir,
36
+ metadata,
37
+ path: skillPath,
38
+ content,
39
+ source: dir === 'dino-workflow' ? 'bundled' : 'local',
40
+ });
41
+ }
42
+ }
43
+ }
44
+ return skills;
45
+ }
46
+ /**
47
+ * Get a specific installed skill
48
+ */
49
+ async getInstalled(projectPath, skillId) {
50
+ const skillPath = join(projectPath, CLAUDE_DIR_NAME, 'skills', skillId);
51
+ const skillFile = join(skillPath, 'SKILL.md');
52
+ const content = await FileSystem.readFileSafe(skillFile);
53
+ if (!content)
54
+ return null;
55
+ const metadata = parseSkillMetadata(content);
56
+ if (!metadata)
57
+ return null;
58
+ return {
59
+ id: skillId,
60
+ metadata,
61
+ path: skillPath,
62
+ content,
63
+ source: skillId === 'dino-workflow' ? 'bundled' : 'local',
64
+ };
65
+ }
66
+ /**
67
+ * Install a skill from registry
68
+ * For MVP, this creates a placeholder - full registry support coming later
69
+ */
70
+ async install(projectPath, skillName) {
71
+ const skillsDir = join(projectPath, CLAUDE_DIR_NAME, 'skills', skillName);
72
+ // Check if already installed
73
+ if (await FileSystem.exists(skillsDir)) {
74
+ return false;
75
+ }
76
+ // For MVP, create a placeholder skill
77
+ // In future, this will fetch from registry
78
+ const placeholder = createPlaceholderSkill(skillName);
79
+ await FileSystem.writeFile(join(skillsDir, 'SKILL.md'), placeholder);
80
+ return true;
81
+ }
82
+ /**
83
+ * Remove an installed skill
84
+ */
85
+ async remove(projectPath, skillId) {
86
+ // Don't allow removing bundled skills
87
+ if (skillId === 'dino-workflow') {
88
+ return false;
89
+ }
90
+ const skillPath = join(projectPath, CLAUDE_DIR_NAME, 'skills', skillId);
91
+ if (!await FileSystem.exists(skillPath)) {
92
+ return false;
93
+ }
94
+ await FileSystem.remove(skillPath);
95
+ return true;
96
+ }
97
+ /**
98
+ * Search registry for skills (MVP: returns empty, future: queries registry)
99
+ */
100
+ async search(query) {
101
+ // MVP: Return empty array
102
+ // Future: Query registry and return matching skills
103
+ return [];
104
+ }
105
+ }
106
+ /**
107
+ * Parse skill metadata from SKILL.md content
108
+ */
109
+ function parseSkillMetadata(content) {
110
+ const match = content.match(/^---\n([\s\S]*?)\n---/);
111
+ if (!match)
112
+ return null;
113
+ const frontmatter = match[1];
114
+ const nameMatch = frontmatter.match(/^name:\s*(.+)$/m);
115
+ const descMatch = frontmatter.match(/^description:\s*(.+)$/m);
116
+ const versionMatch = frontmatter.match(/^version:\s*(.+)$/m);
117
+ const authorMatch = frontmatter.match(/^author:\s*(.+)$/m);
118
+ if (!nameMatch)
119
+ return null;
120
+ return {
121
+ name: nameMatch[1].trim(),
122
+ description: descMatch?.[1]?.trim() ?? 'No description',
123
+ version: versionMatch?.[1]?.trim(),
124
+ author: authorMatch?.[1]?.trim(),
125
+ };
126
+ }
127
+ /**
128
+ * Create a placeholder skill template
129
+ */
130
+ function createPlaceholderSkill(name) {
131
+ return `---
132
+ name: ${name}
133
+ description: Custom skill (edit this description)
134
+ version: 1.0.0
135
+ ---
136
+
137
+ # ${name}
138
+
139
+ This is a custom skill. Edit this file to define your skill's behavior.
140
+
141
+ ## Usage
142
+
143
+ Describe how to use this skill.
144
+
145
+ ## Examples
146
+
147
+ Add examples here.
148
+ `;
149
+ }
150
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/skills/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Skill type definitions
3
+ */
4
+ export interface SkillMetadata {
5
+ name: string;
6
+ description: string;
7
+ version?: string;
8
+ author?: string;
9
+ repository?: string;
10
+ }
11
+ export interface Skill {
12
+ id: string;
13
+ metadata: SkillMetadata;
14
+ path: string;
15
+ content: string;
16
+ source: 'bundled' | 'local' | 'registry';
17
+ }
18
+ export interface RegistrySkill {
19
+ name: string;
20
+ description: string;
21
+ version: string;
22
+ repository: string;
23
+ files: {
24
+ path: string;
25
+ url: string;
26
+ }[];
27
+ }
28
+ export interface SkillRegistry {
29
+ name: string;
30
+ url: string;
31
+ skills: Record<string, RegistrySkill>;
32
+ }
33
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/skills/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;CAC1C;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACb,EAAE,CAAC;CACL;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACvC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Skill type definitions
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/skills/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Template for .dino/dna.md - Project conventions
3
+ */
4
+ export declare function getDnaTemplate(): string;
5
+ //# sourceMappingURL=dna-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dna-template.d.ts","sourceRoot":"","sources":["../../../src/core/templates/dna-template.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CA+CvC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Template for .dino/dna.md - Project conventions
3
+ */
4
+ export function getDnaTemplate() {
5
+ return `# Project DNA
6
+
7
+ This file contains project-specific conventions and context for the dino workflow.
8
+ Edit this file to help Claude understand your project better.
9
+
10
+ ## Project Overview
11
+
12
+ <!-- Brief description of what this project does -->
13
+
14
+ ## Tech Stack
15
+
16
+ <!-- Primary technologies, frameworks, and languages -->
17
+ - Language:
18
+ - Framework:
19
+ - Database:
20
+ - Testing:
21
+
22
+ ## Code Conventions
23
+
24
+ <!-- Coding standards, naming conventions, patterns -->
25
+ -
26
+
27
+ ## Directory Structure
28
+
29
+ <!-- Important paths and their purposes -->
30
+ \`\`\`
31
+ src/
32
+ ├──
33
+ └──
34
+ \`\`\`
35
+
36
+ ## Integration Points
37
+
38
+ <!-- External services, APIs, dependencies -->
39
+ -
40
+
41
+ ## Testing Strategy
42
+
43
+ <!-- How tests should be written and organized -->
44
+ -
45
+
46
+ ## Notes
47
+
48
+ <!-- Additional context, constraints, or preferences -->
49
+ -
50
+ `;
51
+ }
52
+ //# sourceMappingURL=dna-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dna-template.js","sourceRoot":"","sources":["../../../src/core/templates/dna-template.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CR,CAAC;AACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Template exports
3
+ */
4
+ export { getSlashCommandTemplates } from './slash-commands.js';
5
+ export { getWorkflowSkillTemplate } from './skill-template.js';
6
+ export { getWorkflowRulesTemplate } from './rules-template.js';
7
+ export { getDnaTemplate } from './dna-template.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/templates/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Template exports
3
+ */
4
+ export { getSlashCommandTemplates } from './slash-commands.js';
5
+ export { getWorkflowSkillTemplate } from './skill-template.js';
6
+ export { getWorkflowRulesTemplate } from './rules-template.js';
7
+ export { getDnaTemplate } from './dna-template.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/templates/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Template for .claude/rules/dino/workflow.md
3
+ */
4
+ export declare function getWorkflowRulesTemplate(): string;
5
+ //# sourceMappingURL=rules-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules-template.d.ts","sourceRoot":"","sources":["../../../src/core/templates/rules-template.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAkEjD"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Template for .claude/rules/dino/workflow.md
3
+ */
4
+ export function getWorkflowRulesTemplate() {
5
+ return `---
6
+ paths:
7
+ - ".dino/**"
8
+ - ".claude/commands/dino/**"
9
+ ---
10
+
11
+ # Dino Workflow Rules
12
+
13
+ These rules are automatically loaded when working with dino specification files.
14
+
15
+ ## Sequence Enforcement
16
+
17
+ The dino workflow follows a strict sequence. If a user tries to skip steps:
18
+
19
+ 1. **Soft warning** - Explain which step was skipped
20
+ 2. **Offer choices** - Run the skipped step, or continue anyway
21
+ 3. **Never block** - User has final say
22
+
23
+ Correct sequence:
24
+ \`\`\`
25
+ discover → scout → clarify → nest → hatch → hunt → fossil
26
+ \`\`\`
27
+
28
+ ## Plan Mode Requirements
29
+
30
+ These phases MUST enter Plan Mode before making changes:
31
+ - **/dino.nest** - Always requires Plan Mode
32
+ - **/dino.hatch** - Requires Plan Mode if >= 5 tasks
33
+
34
+ ## Task Format
35
+
36
+ Tasks in tasks.md must follow this format:
37
+ \`\`\`
38
+ - [ ] T001 Description with file path
39
+ - [ ] T002 [P] Parallelizable task
40
+ - [x] T003 Completed task
41
+ \`\`\`
42
+
43
+ - \`T001\`, \`T002\` = Sequential task IDs
44
+ - \`[P]\` = Can run in parallel with other [P] tasks
45
+ - Maximum 8-10 tasks per phase
46
+
47
+ ## Context Recovery
48
+
49
+ At the start of any dino command, if no context:
50
+ 1. Check \`.dino/active.json\` for active spec
51
+ 2. If active spec exists, read its files
52
+ 3. Resume from appropriate phase
53
+
54
+ ## File Modification Rules
55
+
56
+ When modifying .dino/ files:
57
+ - Always preserve existing content structure
58
+ - Use DINO markers for managed sections
59
+ - Update active.json when changing phases
60
+ - Mark tasks as [x] immediately when completed
61
+
62
+ ## Progress Tracking
63
+
64
+ After completing any implementation:
65
+ 1. Find the matching task in tasks.md
66
+ 2. Change \`- [ ]\` to \`- [x]\`
67
+ 3. Save tasks.md immediately
68
+ 4. Report progress to user
69
+ `;
70
+ }
71
+ //# sourceMappingURL=rules-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules-template.js","sourceRoot":"","sources":["../../../src/core/templates/rules-template.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgER,CAAC;AACF,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Template for .claude/skills/dino-workflow/SKILL.md
3
+ */
4
+ export declare function getWorkflowSkillTemplate(): string;
5
+ //# sourceMappingURL=skill-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-template.d.ts","sourceRoot":"","sources":["../../../src/core/templates/skill-template.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CA0DjD"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Template for .claude/skills/dino-workflow/SKILL.md
3
+ */
4
+ export function getWorkflowSkillTemplate() {
5
+ return `---
6
+ name: dino-workflow
7
+ description: Structured specification-driven development workflow with dinosaur-themed phases
8
+ ---
9
+
10
+ # Dino Workflow Skill
11
+
12
+ This skill guides structured feature development through sequential phases.
13
+
14
+ ## Workflow Overview
15
+
16
+ 1. **Discover** (/dino.discover) - Explore problem space, gather requirements
17
+ 2. **Scout** (/dino.scout) - Research codebase and technical options
18
+ 3. **Clarify** (/dino.clarify) - Resolve ambiguity with targeted questions
19
+ 4. **Nest** (/dino.nest) - Create implementation plan (requires Plan Mode)
20
+ 5. **Hatch** (/dino.hatch) - Break plan into phased tasks
21
+ 6. **Hunt** (/dino.hunt) - Implement tasks, track progress
22
+ 7. **Fossil** (/dino.fossil) - Archive completed specification
23
+ 8. **Next** (/dino.next) - Suggest next features (optional)
24
+
25
+ ## Key Principles
26
+
27
+ - **Never skip phases** - Each phase builds on the previous
28
+ - **Context preservation** - All state is stored in .dino/ files
29
+ - **Plan Mode for complex work** - /dino.nest and /dino.hatch require planning
30
+ - **Max 8-10 tasks per phase** - Prevents context loss
31
+ - **One active spec at a time** - Focus on completing before starting new
32
+
33
+ ## File Locations
34
+
35
+ - \`.dino/active.json\` - Current active specification
36
+ - \`.dino/dna.md\` - Project conventions
37
+ - \`.dino/specs/{id}/\` - Active specifications
38
+ - \`spec.md\` - Requirements and intent
39
+ - \`research.md\` - Technical research
40
+ - \`plan.md\` - Implementation plan
41
+ - \`tasks.md\` - Phased task checklist
42
+ - \`.dino/archive/\` - Completed specifications
43
+
44
+ ## Phase Transitions
45
+
46
+ When finishing a phase, suggest the next appropriate command:
47
+ - After discover → scout or clarify
48
+ - After scout → clarify or nest
49
+ - After clarify → nest
50
+ - After nest → hatch
51
+ - After hatch → hunt
52
+ - After hunt (all tasks done) → fossil
53
+ - After fossil → next (optional)
54
+
55
+ ## Error Recovery
56
+
57
+ If context is lost or new session starts:
58
+ 1. Read \`.dino/active.json\` to find current spec
59
+ 2. Read the spec's files (spec.md, plan.md, tasks.md)
60
+ 3. Resume from first unchecked task in tasks.md
61
+ `;
62
+ }
63
+ //# sourceMappingURL=skill-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-template.js","sourceRoot":"","sources":["../../../src/core/templates/skill-template.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDR,CAAC;AACF,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Slash command templates for .claude/commands/dino/
3
+ */
4
+ export declare function getSlashCommandTemplates(): Record<string, string>;
5
+ //# sourceMappingURL=slash-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slash-commands.d.ts","sourceRoot":"","sources":["../../../src/core/templates/slash-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,wBAAwB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAajE"}