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.
- package/LICENSE +21 -0
- package/README.md +243 -0
- package/bin/dino.js +3 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +114 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/commands/active.d.ts +5 -0
- package/dist/commands/active.d.ts.map +1 -0
- package/dist/commands/active.js +85 -0
- package/dist/commands/active.js.map +1 -0
- package/dist/commands/archive.d.ts +9 -0
- package/dist/commands/archive.d.ts.map +1 -0
- package/dist/commands/archive.js +77 -0
- package/dist/commands/archive.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +91 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +12 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +169 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/skill.d.ts +17 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +143 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/status.d.ts +9 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +96 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/update.d.ts +9 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +64 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/view.d.ts +5 -0
- package/dist/commands/view.d.ts.map +1 -0
- package/dist/commands/view.js +177 -0
- package/dist/commands/view.js.map +1 -0
- package/dist/core/config.d.ts +51 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +58 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/skills/index.d.ts +7 -0
- package/dist/core/skills/index.d.ts.map +1 -0
- package/dist/core/skills/index.js +6 -0
- package/dist/core/skills/index.js.map +1 -0
- package/dist/core/skills/loader.d.ts +34 -0
- package/dist/core/skills/loader.d.ts.map +1 -0
- package/dist/core/skills/loader.js +110 -0
- package/dist/core/skills/loader.js.map +1 -0
- package/dist/core/skills/registry.d.ts +31 -0
- package/dist/core/skills/registry.d.ts.map +1 -0
- package/dist/core/skills/registry.js +150 -0
- package/dist/core/skills/registry.js.map +1 -0
- package/dist/core/skills/types.d.ts +33 -0
- package/dist/core/skills/types.d.ts.map +1 -0
- package/dist/core/skills/types.js +5 -0
- package/dist/core/skills/types.js.map +1 -0
- package/dist/core/templates/dna-template.d.ts +5 -0
- package/dist/core/templates/dna-template.d.ts.map +1 -0
- package/dist/core/templates/dna-template.js +52 -0
- package/dist/core/templates/dna-template.js.map +1 -0
- package/dist/core/templates/index.d.ts +8 -0
- package/dist/core/templates/index.d.ts.map +1 -0
- package/dist/core/templates/index.js +8 -0
- package/dist/core/templates/index.js.map +1 -0
- package/dist/core/templates/rules-template.d.ts +5 -0
- package/dist/core/templates/rules-template.d.ts.map +1 -0
- package/dist/core/templates/rules-template.js +71 -0
- package/dist/core/templates/rules-template.js.map +1 -0
- package/dist/core/templates/skill-template.d.ts +5 -0
- package/dist/core/templates/skill-template.d.ts.map +1 -0
- package/dist/core/templates/skill-template.js +63 -0
- package/dist/core/templates/skill-template.js.map +1 -0
- package/dist/core/templates/slash-commands.d.ts +5 -0
- package/dist/core/templates/slash-commands.d.ts.map +1 -0
- package/dist/core/templates/slash-commands.js +753 -0
- package/dist/core/templates/slash-commands.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/ascii-art.d.ts +38 -0
- package/dist/utils/ascii-art.d.ts.map +1 -0
- package/dist/utils/ascii-art.js +66 -0
- package/dist/utils/ascii-art.js.map +1 -0
- package/dist/utils/file-system.d.ts +67 -0
- package/dist/utils/file-system.d.ts.map +1 -0
- package/dist/utils/file-system.js +177 -0
- package/dist/utils/file-system.js.map +1 -0
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/skills/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|