Skip to content

Commit 98fd12f

Browse files
committed
feat(skills): restructure docs + add PR lifecycle skills
Restructure .chalk/docs from numbered files to PROFILE.md convention, expand chalk.json into a machine-readable project identity that skills consume, and add 5 new lifecycle skills completing the issue-to-PR workflow. Foundation: - chalk.schema.json defining the expanded chalk.json contract - setup-chalk v2.0.0 generates expanded chalk.json + PROFILE.md structure - setup-docs v2.0.0 enriches chalk.json and populates PROFILE stubs - validate-chalk audits completeness and reports gaps Lifecycle skills: - work-issue: GitHub issue → branch → context setup - commit: staging + conventional commit workflow - capture-pr-visuals: Playwright screenshot + GIF capture - create-pr: PR creation with visual preview integration
1 parent 1b65598 commit 98fd12f

9 files changed

Lines changed: 997 additions & 166 deletions

File tree

docs/chalk.schema.json

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-07/schema#",
3+
"title": "chalk.json",
4+
"description": "Project identity and machine-readable metadata for Chalk skills. This is the single source of truth that skills read to understand a project.",
5+
"type": "object",
6+
"required": ["version", "project"],
7+
"properties": {
8+
"version": {
9+
"type": "string",
10+
"description": "Schema version",
11+
"enum": ["1.0"]
12+
},
13+
"project": {
14+
"type": "object",
15+
"description": "Core project identity",
16+
"required": ["name"],
17+
"properties": {
18+
"name": {
19+
"type": "string",
20+
"description": "Project name (from package.json name, Cargo.toml, or directory name)"
21+
},
22+
"description": {
23+
"type": "string",
24+
"description": "One-line description (from package.json description or README)"
25+
},
26+
"language": {
27+
"type": "string",
28+
"description": "Primary language",
29+
"examples": ["typescript", "javascript", "python", "go", "rust", "java"]
30+
},
31+
"framework": {
32+
"type": "string",
33+
"description": "Primary framework",
34+
"examples": ["next", "vite", "react", "angular", "vue", "svelte", "electron", "django", "flask", "express", "fastapi"]
35+
},
36+
"type": {
37+
"type": "string",
38+
"description": "Application type",
39+
"enum": ["web", "desktop", "mobile", "api", "library", "cli", "monorepo"]
40+
}
41+
}
42+
},
43+
"dev": {
44+
"type": "object",
45+
"description": "Development server configuration. Skills use this to start and connect to the running app.",
46+
"properties": {
47+
"command": {
48+
"type": "string",
49+
"description": "Command to start the dev server",
50+
"examples": ["npm run dev", "yarn dev", "make dev", "cargo run"]
51+
},
52+
"port": {
53+
"type": "integer",
54+
"description": "Dev server port",
55+
"examples": [3000, 5173, 8080, 4200]
56+
},
57+
"url": {
58+
"type": "string",
59+
"description": "Dev server URL (for apps with non-standard URLs or Electron renderer URLs)",
60+
"examples": ["http://localhost:3000", "http://localhost:5173"]
61+
},
62+
"notes": {
63+
"type": "string",
64+
"description": "Any quirks about the dev setup (e.g., 'electron-vite serves renderer on separate port')"
65+
}
66+
}
67+
},
68+
"test": {
69+
"type": "object",
70+
"description": "Test configuration",
71+
"properties": {
72+
"command": {
73+
"type": "string",
74+
"description": "Command to run tests",
75+
"examples": ["npm test", "pytest", "go test ./...", "cargo test"]
76+
},
77+
"framework": {
78+
"type": "string",
79+
"description": "Test framework in use",
80+
"examples": ["jest", "vitest", "playwright", "pytest", "node:test", "go test"]
81+
}
82+
}
83+
},
84+
"build": {
85+
"type": "object",
86+
"description": "Build configuration",
87+
"properties": {
88+
"command": {
89+
"type": "string",
90+
"description": "Command to build for production",
91+
"examples": ["npm run build", "cargo build --release"]
92+
},
93+
"output": {
94+
"type": "string",
95+
"description": "Build output directory",
96+
"examples": ["dist/", "build/", "out/", "target/release/"]
97+
}
98+
}
99+
},
100+
"routes": {
101+
"type": "array",
102+
"description": "Application routes/pages. Skills like capture-pr-visuals use this to know what to screenshot.",
103+
"items": {
104+
"type": "object",
105+
"required": ["path", "name"],
106+
"properties": {
107+
"path": {
108+
"type": "string",
109+
"description": "Route path (URL path, query param, or file-based route)",
110+
"examples": ["/", "/dashboard", "?home=true", "/api/users"]
111+
},
112+
"name": {
113+
"type": "string",
114+
"description": "Human-readable page/route name",
115+
"examples": ["Home", "Dashboard", "Settings"]
116+
},
117+
"src": {
118+
"type": "string",
119+
"description": "Source directory or file that implements this route",
120+
"examples": ["src/pages/dashboard/", "app/dashboard/page.tsx"]
121+
}
122+
}
123+
}
124+
},
125+
"sourceLayout": {
126+
"type": "object",
127+
"description": "Where source code lives. Helps skills place new files correctly and map changes to routes.",
128+
"properties": {
129+
"root": {
130+
"type": "string",
131+
"description": "Source root directory",
132+
"examples": ["src/", "app/", "lib/"]
133+
},
134+
"entrypoints": {
135+
"type": "object",
136+
"description": "Key entry point files",
137+
"additionalProperties": {
138+
"type": "string"
139+
}
140+
},
141+
"components": {
142+
"type": "string",
143+
"description": "Shared components directory",
144+
"examples": ["src/components/", "app/components/"]
145+
},
146+
"pages": {
147+
"type": "string",
148+
"description": "Pages/views directory",
149+
"examples": ["src/pages/", "app/", "src/renderer/src/"]
150+
},
151+
"styles": {
152+
"type": "string",
153+
"description": "Styles directory",
154+
"examples": ["src/styles/", "styles/"]
155+
},
156+
"tests": {
157+
"type": "string",
158+
"description": "Tests directory",
159+
"examples": ["tests/", "__tests__/", "src/**/*.test.ts"]
160+
}
161+
}
162+
},
163+
"createdAt": {
164+
"type": "string",
165+
"format": "date-time",
166+
"description": "When chalk was initialized for this project"
167+
},
168+
"updatedAt": {
169+
"type": "string",
170+
"format": "date-time",
171+
"description": "When chalk.json was last updated"
172+
}
173+
}
174+
}

0 commit comments

Comments
 (0)