claude-agent-skills 1.3.7 → 1.4.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/lib/banner.js +14 -13
- package/lib/picker.js +13 -17
- package/lib/theme.js +23 -14
- package/package.json +1 -1
- package/skills.json +11 -11
package/lib/banner.js
CHANGED
|
@@ -23,20 +23,21 @@ const SKILLS_LINES = [
|
|
|
23
23
|
const ART = [...CLAUDE_LINES, ...SKILLS_LINES];
|
|
24
24
|
const MAX_WIDTH = Math.max(...ART.map(l => l.length));
|
|
25
25
|
|
|
26
|
-
//
|
|
26
|
+
// Colour palette per art line — crimson gradient top → deep red bottom.
|
|
27
|
+
// To restore pride rainbow: replace each entry with the pride colours.
|
|
27
28
|
const PRIDE = [
|
|
28
|
-
[
|
|
29
|
-
[
|
|
30
|
-
[
|
|
31
|
-
[
|
|
32
|
-
[
|
|
33
|
-
[
|
|
34
|
-
[
|
|
35
|
-
[
|
|
36
|
-
[
|
|
37
|
-
[
|
|
38
|
-
[
|
|
39
|
-
[
|
|
29
|
+
[240, 65, 65],
|
|
30
|
+
[230, 55, 55],
|
|
31
|
+
[215, 42, 42],
|
|
32
|
+
[200, 32, 32],
|
|
33
|
+
[185, 25, 25],
|
|
34
|
+
[170, 18, 18],
|
|
35
|
+
[155, 13, 13],
|
|
36
|
+
[140, 10, 10],
|
|
37
|
+
[125, 8, 8],
|
|
38
|
+
[110, 6, 6],
|
|
39
|
+
[ 95, 4, 4],
|
|
40
|
+
[ 80, 3, 3],
|
|
40
41
|
];
|
|
41
42
|
|
|
42
43
|
const sleep = ms => new Promise(r => setTimeout(r, ms));
|
package/lib/picker.js
CHANGED
|
@@ -38,12 +38,11 @@ export async function skillPicker({ message, options }) {
|
|
|
38
38
|
const numCols = Math.max(1, Math.floor((termW - 2) / colW));
|
|
39
39
|
const numRows = Math.ceil(options.length / numCols);
|
|
40
40
|
|
|
41
|
-
//
|
|
42
|
-
const HEADER
|
|
43
|
-
const GRID_H
|
|
44
|
-
const SEP
|
|
45
|
-
const
|
|
46
|
-
const FOOTER = 1;
|
|
41
|
+
// Layout heights — DESC_H is computed dynamically per render from wrapped lines
|
|
42
|
+
const HEADER = 2;
|
|
43
|
+
const GRID_H = numRows;
|
|
44
|
+
const SEP = 1;
|
|
45
|
+
const FOOTER = 1;
|
|
47
46
|
|
|
48
47
|
let cursor = 0;
|
|
49
48
|
const sel = new Set();
|
|
@@ -84,16 +83,14 @@ export async function skillPicker({ message, options }) {
|
|
|
84
83
|
lines.push(row);
|
|
85
84
|
}
|
|
86
85
|
|
|
87
|
-
// Separator + description
|
|
88
|
-
lines.push(muted('├' + '─'.repeat(Math.min(termW - 2, 78)) + '┤'));
|
|
89
|
-
|
|
86
|
+
// Separator + full description — all lines, no cap
|
|
90
87
|
const focused = options[cursor];
|
|
91
88
|
const desc = focused?.description ?? '';
|
|
92
|
-
// Cap wrap at 72 chars so descriptions always break into multiple lines
|
|
93
89
|
const wrapW = Math.min(termW - 6, 72);
|
|
94
|
-
const wrapped = desc ? wordWrap(desc, wrapW) : [];
|
|
95
|
-
|
|
96
|
-
|
|
90
|
+
const wrapped = desc ? wordWrap(desc, wrapW) : [''];
|
|
91
|
+
|
|
92
|
+
lines.push(muted('├' + '─'.repeat(Math.min(termW - 2, 78)) + '┤'));
|
|
93
|
+
for (const line of wrapped) {
|
|
97
94
|
lines.push(muted('│ ') + white(line));
|
|
98
95
|
}
|
|
99
96
|
|
|
@@ -109,13 +106,12 @@ export async function skillPicker({ message, options }) {
|
|
|
109
106
|
|
|
110
107
|
function draw() {
|
|
111
108
|
const lines = renderGrid();
|
|
112
|
-
|
|
113
|
-
if (lastLines > 0) {
|
|
114
|
-
process.stdout.write(`\x1b[${lastLines}A`);
|
|
115
|
-
}
|
|
109
|
+
if (lastLines > 0) process.stdout.write(`\x1b[${lastLines}A`);
|
|
116
110
|
for (const line of lines) {
|
|
117
111
|
process.stdout.write('\x1b[2K' + line + '\n');
|
|
118
112
|
}
|
|
113
|
+
// Erase any leftover content from a previously taller render
|
|
114
|
+
process.stdout.write('\x1b[0J');
|
|
119
115
|
lastLines = lines.length;
|
|
120
116
|
}
|
|
121
117
|
|
package/lib/theme.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import ansis from 'ansis';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// ── Colour mode ─────────────────────────────────────────────────────────────
|
|
4
|
+
// Flip PRIDE_MODE to true for pride month to restore rainbow palette.
|
|
5
|
+
export const PRIDE_MODE = false;
|
|
6
|
+
|
|
7
|
+
export const BRAND_HEX = '#B91919'; // metallic crimson
|
|
4
8
|
|
|
5
9
|
const ok = () => !process.env.NO_COLOR && ansis.isSupported();
|
|
6
10
|
|
|
@@ -11,25 +15,30 @@ export const muted = t => ok() ? ansis.dim(t) : t;
|
|
|
11
15
|
export const white = t => ok() ? ansis.white(t) : t;
|
|
12
16
|
export const strip = t => ansis.strip(t);
|
|
13
17
|
|
|
14
|
-
//
|
|
15
|
-
|
|
16
|
-
|
|
18
|
+
// Metallic crimson — bright at index 0, steps down, then back up (cycling shimmer)
|
|
19
|
+
const CRIMSON = [
|
|
20
|
+
[235, 60, 60],
|
|
21
|
+
[210, 38, 38],
|
|
22
|
+
[185, 25, 25],
|
|
23
|
+
[160, 15, 15],
|
|
24
|
+
[185, 25, 25],
|
|
25
|
+
[210, 38, 38],
|
|
26
|
+
];
|
|
17
27
|
|
|
28
|
+
// Pride rainbow — restore for pride month
|
|
18
29
|
const PRIDE_PALETTE = [
|
|
19
|
-
[220, 30, 30],
|
|
20
|
-
[255, 140, 0],
|
|
21
|
-
[220, 200, 0],
|
|
22
|
-
[ 30, 185, 30],
|
|
23
|
-
[ 30, 100, 255],
|
|
24
|
-
[150, 30, 230],
|
|
30
|
+
[220, 30, 30],
|
|
31
|
+
[255, 140, 0],
|
|
32
|
+
[220, 200, 0],
|
|
33
|
+
[ 30, 185, 30],
|
|
34
|
+
[ 30, 100, 255],
|
|
35
|
+
[150, 30, 230],
|
|
25
36
|
];
|
|
26
37
|
|
|
27
|
-
// Returns a color function for the nth skill. Cycles through pride palette in
|
|
28
|
-
// PRIDE_MODE, falls back to brand pink otherwise.
|
|
29
38
|
export function skillColor(index) {
|
|
30
39
|
if (!ok()) return t => t;
|
|
31
|
-
|
|
32
|
-
const [r, g, b] =
|
|
40
|
+
const palette = PRIDE_MODE ? PRIDE_PALETTE : CRIMSON;
|
|
41
|
+
const [r, g, b] = palette[index % palette.length];
|
|
33
42
|
return t => ansis.rgb(r, g, b)(t);
|
|
34
43
|
}
|
|
35
44
|
|
package/package.json
CHANGED
package/skills.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": 1,
|
|
3
3
|
"name": "claude-agent-skills",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.4.0",
|
|
5
5
|
"skills": [
|
|
6
6
|
"ask-matt",
|
|
7
7
|
"brainstorming",
|
|
@@ -108,25 +108,25 @@
|
|
|
108
108
|
"descriptions": {
|
|
109
109
|
"ask-matt": "You don't remember every skill, so ask.",
|
|
110
110
|
"brainstorming": "Help turn ideas into fully formed designs and specs through natural collaborative dialogue.",
|
|
111
|
-
"cavecrew": "Cavecrew = three subagent presets that emit caveman output. Same job as Anthropic defaults (`Explore`, edit-style agents, reviewer); difference is the tool-result they return is compressed, so main
|
|
111
|
+
"cavecrew": "Cavecrew = three subagent presets that emit caveman output. Same job as Anthropic defaults (`Explore`, edit-style agents, reviewer); difference is the tool-result they return is compressed, so main context shrinks per delegation.",
|
|
112
112
|
"caveman": "Respond terse like smart caveman. All technical substance stay. Only fluff die.",
|
|
113
113
|
"caveman-commit": "Write commit messages terse and exact. Conventional Commits format. No fluff. Why over what.",
|
|
114
|
-
"caveman-compress": "Compress natural language files (CLAUDE.md, todos, preferences) into caveman-speak to reduce input tokens. Compressed version overwrites original. Human-readable backup saved as `<filename>.original
|
|
114
|
+
"caveman-compress": "Compress natural language files (CLAUDE.md, todos, preferences) into caveman-speak to reduce input tokens. Compressed version overwrites original. Human-readable backup saved as `<filename>.original.md`.",
|
|
115
115
|
"caveman-help": "Display this reference card when invoked. One-shot — do NOT change mode, write flag files, or persist anything. Output in caveman style.",
|
|
116
116
|
"caveman-review": "Write code review comments terse and actionable. One line per finding. Location, problem, fix. No throat-clearing.",
|
|
117
|
-
"caveman-stats": "This skill is delivered by `hooks/caveman-stats.js` (read by `hooks/caveman-mode-tracker.js` on `/caveman-stats`). The model does not need to do anything when this skill fires — the hook returns `
|
|
118
|
-
"codebase-design": "Design **deep modules**: a lot of behaviour behind a small interface, placed at a clean seam, testable through that interface. Use this language and these principles wherever code is being designed
|
|
117
|
+
"caveman-stats": "This skill is delivered by `hooks/caveman-stats.js` (read by `hooks/caveman-mode-tracker.js` on `/caveman-stats`). The model does not need to do anything when this skill fires — the hook returns `decision: \"block\"` with the formatted stats as the reason. The user sees the numbers immediately.",
|
|
118
|
+
"codebase-design": "Design **deep modules**: a lot of behaviour behind a small interface, placed at a clean seam, testable through that interface. Use this language and these principles wherever code is being designed or restructured. The aim is leverage for callers, locality for maintainers, and testability for everyone.",
|
|
119
119
|
"council": "You are the orchestrator. Dispatch three Haiku subagents in parallel — each a council member giving an independent perspective — then synthesize their responses into a unified recommendation.",
|
|
120
120
|
"diagnosing-bugs": "A discipline for hard bugs. Skip phases only when explicitly justified.",
|
|
121
|
-
"dispatching-parallel-agents": "You delegate tasks to specialized agents with isolated context. By precisely crafting their instructions and context, you ensure they stay focused and succeed at their task. They should never inherit
|
|
122
|
-
"domain-modeling": "Actively build and sharpen the project's domain model as you design. This is the *active* discipline — challenging terms, inventing edge-case scenarios, and writing the glossary and decisions down
|
|
121
|
+
"dispatching-parallel-agents": "You delegate tasks to specialized agents with isolated context. By precisely crafting their instructions and context, you ensure they stay focused and succeed at their task. They should never inherit your session's context or history — you construct exactly what they need. This also preserves your own context for coordination work.",
|
|
122
|
+
"domain-modeling": "Actively build and sharpen the project's domain model as you design. This is the *active* discipline — challenging terms, inventing edge-case scenarios, and writing the glossary and decisions down the moment they crystallise. (Merely *reading* `CONTEXT.md` for vocabulary is not this skill — that's a one-line habit any skill can do. This skill is for when you're changing the model, not just consuming it.)",
|
|
123
123
|
"edit-article": "1. First, divide the article into sections based on its headings. Think about the main points you want to make during those sections.",
|
|
124
124
|
"executing-plans": "Load plan, review critically, execute all tasks, report when complete.",
|
|
125
125
|
"finishing-a-development-branch": "Guide completion of development work by presenting clear options and handling chosen workflow.",
|
|
126
126
|
"git-guardrails-claude-code": "Sets up a PreToolUse hook that intercepts and blocks dangerous git commands before Claude executes them.",
|
|
127
127
|
"grill-me": "Run a `/grilling` session.",
|
|
128
128
|
"grill-with-docs": "Run a `/grilling` session, using the `/domain-modeling` skill.",
|
|
129
|
-
"grilling": "Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For
|
|
129
|
+
"grilling": "Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.",
|
|
130
130
|
"handoff": "Write a handoff document summarising the current conversation so a fresh agent can continue the work. Save to the temporary directory of the user's OS - not the current workspace.",
|
|
131
131
|
"i-am-dumb": "The user wants something explained in extreme detail. They are not actually dumb — they just want the full picture without assumptions about what they already know.",
|
|
132
132
|
"implement": "Implement the work described by the user in the PRD or issues.",
|
|
@@ -141,7 +141,7 @@
|
|
|
141
141
|
"ponytail-review": "Review the diff or codebase for over-engineering only. Goal: make the code shorter. Report findings as one line each. Apply no fixes unless explicitly asked.",
|
|
142
142
|
"prototype": "A prototype is **throwaway code that answers a question**. The question decides the shape.",
|
|
143
143
|
"receiving-code-review": "Code review requires technical evaluation, not emotional performance.",
|
|
144
|
-
"requesting-code-review": "Dispatch a code reviewer subagent to catch issues before they cascade. The reviewer gets precisely crafted context for evaluation — never your session's history. This keeps the reviewer focused on
|
|
144
|
+
"requesting-code-review": "Dispatch a code reviewer subagent to catch issues before they cascade. The reviewer gets precisely crafted context for evaluation — never your session's history. This keeps the reviewer focused on the work product, not your thought process, and preserves your own context for continued work.",
|
|
145
145
|
"resolving-merge-conflicts": "1. **See the current state** of the merge/rebase. Check git history, and the conflicting files.",
|
|
146
146
|
"scaffold-exercises": "Create exercise directory structures that pass `pnpm ai-hero-cli internal lint`, then commit with `git commit`.",
|
|
147
147
|
"setup-matt-pocock-skills": "Scaffold the per-repo configuration that the engineering skills assume:",
|
|
@@ -157,8 +157,8 @@
|
|
|
157
157
|
"using-git-worktrees": "Ensure work happens in an isolated workspace. Prefer your platform's native worktree tools. Fall back to manual git worktrees only when no native tool is available.",
|
|
158
158
|
"using-superpowers": "<SUBAGENT-STOP> If you were dispatched as a subagent to execute a specific task, skip this skill. </SUBAGENT-STOP>",
|
|
159
159
|
"verification-before-completion": "Claiming work is complete without verification is dishonesty, not efficiency.",
|
|
160
|
-
"writing-great-skills": "A skill exists to wrangle determinism out of a stochastic system. **Predictability** — the agent taking the same _process_ every run, not producing the same output — is the root virtue; every lever
|
|
161
|
-
"writing-plans": "Write comprehensive implementation plans assuming the engineer has zero context for our codebase and questionable taste. Document everything they need to know: which files to touch for each task,
|
|
160
|
+
"writing-great-skills": "A skill exists to wrangle determinism out of a stochastic system. **Predictability** — the agent taking the same _process_ every run, not producing the same output — is the root virtue; every lever below serves it.",
|
|
161
|
+
"writing-plans": "Write comprehensive implementation plans assuming the engineer has zero context for our codebase and questionable taste. Document everything they need to know: which files to touch for each task, code, testing, docs they might need to check, how to test it. Give them the whole plan as bite-sized tasks. DRY. YAGNI. TDD. Frequent commits.",
|
|
162
162
|
"writing-skills": "**Writing skills IS Test-Driven Development applied to process documentation.**"
|
|
163
163
|
}
|
|
164
164
|
}
|