feat(skills): rename shortcuts skill and auto-enable caveman/ponytail on install
Rename the portable conversation-shortcut skill from agent-shortcuts to
shortcuts and re-prefix every token to soc* (sobu, soco, socobu, socon,
sona, sote) so each token mirrors its command and never places two
consonants next to each other. make install and make project now also
register the caveman and ponytail marketplaces and enable both plugins in
the target's .claude/settings.json so their SessionStart hooks activate
every session; the merge is non-destructive, idempotent, and leaves an
unparseable settings.json untouched.
- skills/shortcuts/SKILL.md: new name and soc* token table
- tests/test_shortcuts.py: assert present, sorted, soc-prefixed, no cluster
- remove skills/agent-shortcuts and tests/test_agent_shortcuts.py
- scripts/enable-plugins.js: node JSON merge helper
- scripts/install.sh: run the helper after copying skills
- README.md: document the auto-enable behavior
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 14:59:17 +02:00
|
|
|
#!/usr/bin/env node
|
|
|
|
|
// Enable the caveman and ponytail plugins in a Claude Code settings.json so
|
2026-07-25 18:24:53 +02:00
|
|
|
// their SessionStart hooks auto-activate both modes, and register the autotune
|
feat(dream): add reflection skill and 12h reminder
Replay the last 24h of a repository — git log and reflog, CI, reviews,
memory, session transcripts — score every action as held, broke or unknown
against its evidence, harden the resulting hypotheses with dialectic, and
persist what survives. The objective is a measurably more confident next
run: a class of error counts as closed only once a test, check, hook or
written rule prevents it.
Derived improvements to the code and to the agent instructions are offered
as single-select questions, and the run ends in autotune and autoskill.
The reminder hook stamps into each repository's git dir, so every repo
carries its own twelve-hour cadence and the hook stays silent outside a
git repository.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-02 19:34:05 +02:00
|
|
|
// and dream reminder hooks. Merges non-destructively: existing marketplaces,
|
|
|
|
|
// plugins and hooks are preserved, unparseable files are left untouched.
|
feat(skills): rename shortcuts skill and auto-enable caveman/ponytail on install
Rename the portable conversation-shortcut skill from agent-shortcuts to
shortcuts and re-prefix every token to soc* (sobu, soco, socobu, socon,
sona, sote) so each token mirrors its command and never places two
consonants next to each other. make install and make project now also
register the caveman and ponytail marketplaces and enable both plugins in
the target's .claude/settings.json so their SessionStart hooks activate
every session; the merge is non-destructive, idempotent, and leaves an
unparseable settings.json untouched.
- skills/shortcuts/SKILL.md: new name and soc* token table
- tests/test_shortcuts.py: assert present, sorted, soc-prefixed, no cluster
- remove skills/agent-shortcuts and tests/test_agent_shortcuts.py
- scripts/enable-plugins.js: node JSON merge helper
- scripts/install.sh: run the helper after copying skills
- README.md: document the auto-enable behavior
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 14:59:17 +02:00
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
const fs = require("fs");
|
2026-07-25 18:24:53 +02:00
|
|
|
const path = require("path");
|
feat(skills): rename shortcuts skill and auto-enable caveman/ponytail on install
Rename the portable conversation-shortcut skill from agent-shortcuts to
shortcuts and re-prefix every token to soc* (sobu, soco, socobu, socon,
sona, sote) so each token mirrors its command and never places two
consonants next to each other. make install and make project now also
register the caveman and ponytail marketplaces and enable both plugins in
the target's .claude/settings.json so their SessionStart hooks activate
every session; the merge is non-destructive, idempotent, and leaves an
unparseable settings.json untouched.
- skills/shortcuts/SKILL.md: new name and soc* token table
- tests/test_shortcuts.py: assert present, sorted, soc-prefixed, no cluster
- remove skills/agent-shortcuts and tests/test_agent_shortcuts.py
- scripts/enable-plugins.js: node JSON merge helper
- scripts/install.sh: run the helper after copying skills
- README.md: document the auto-enable behavior
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 14:59:17 +02:00
|
|
|
|
|
|
|
|
const settingsPath = process.argv[2];
|
|
|
|
|
if (!settingsPath) {
|
|
|
|
|
console.error("usage: enable-plugins.js <settings.json>");
|
|
|
|
|
process.exit(2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const MARKETPLACES = {
|
|
|
|
|
caveman: { source: { source: "github", repo: "JuliusBrussee/caveman" } },
|
|
|
|
|
ponytail: { source: { source: "github", repo: "DietrichGebert/ponytail" } },
|
|
|
|
|
};
|
|
|
|
|
const PLUGINS = { "caveman@caveman": true, "ponytail@ponytail": true };
|
feat(dream): add reflection skill and 12h reminder
Replay the last 24h of a repository — git log and reflog, CI, reviews,
memory, session transcripts — score every action as held, broke or unknown
against its evidence, harden the resulting hypotheses with dialectic, and
persist what survives. The objective is a measurably more confident next
run: a class of error counts as closed only once a test, check, hook or
written rule prevents it.
Derived improvements to the code and to the agent instructions are offered
as single-select questions, and the run ends in autotune and autoskill.
The reminder hook stamps into each repository's git dir, so every repo
carries its own twelve-hour cadence and the hook stays silent outside a
git repository.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-02 19:34:05 +02:00
|
|
|
const REMINDERS = ["autotune", "dream"];
|
feat(skills): rename shortcuts skill and auto-enable caveman/ponytail on install
Rename the portable conversation-shortcut skill from agent-shortcuts to
shortcuts and re-prefix every token to soc* (sobu, soco, socobu, socon,
sona, sote) so each token mirrors its command and never places two
consonants next to each other. make install and make project now also
register the caveman and ponytail marketplaces and enable both plugins in
the target's .claude/settings.json so their SessionStart hooks activate
every session; the merge is non-destructive, idempotent, and leaves an
unparseable settings.json untouched.
- skills/shortcuts/SKILL.md: new name and soc* token table
- tests/test_shortcuts.py: assert present, sorted, soc-prefixed, no cluster
- remove skills/agent-shortcuts and tests/test_agent_shortcuts.py
- scripts/enable-plugins.js: node JSON merge helper
- scripts/install.sh: run the helper after copying skills
- README.md: document the auto-enable behavior
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 14:59:17 +02:00
|
|
|
|
|
|
|
|
let data = {};
|
|
|
|
|
if (fs.existsSync(settingsPath)) {
|
|
|
|
|
const raw = fs.readFileSync(settingsPath, "utf8").trim();
|
|
|
|
|
if (raw) {
|
|
|
|
|
try {
|
|
|
|
|
data = JSON.parse(raw);
|
|
|
|
|
} catch (err) {
|
|
|
|
|
console.error(`skills: ${settingsPath} is not valid JSON; leaving it untouched (${err.message}).`);
|
|
|
|
|
process.exit(0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
data.extraKnownMarketplaces = data.extraKnownMarketplaces || {};
|
|
|
|
|
for (const [name, entry] of Object.entries(MARKETPLACES)) {
|
|
|
|
|
if (!data.extraKnownMarketplaces[name]) data.extraKnownMarketplaces[name] = entry;
|
|
|
|
|
}
|
|
|
|
|
data.enabledPlugins = Object.assign(data.enabledPlugins || {}, PLUGINS);
|
|
|
|
|
|
2026-07-25 18:24:53 +02:00
|
|
|
data.hooks = data.hooks || {};
|
|
|
|
|
data.hooks.UserPromptSubmit = data.hooks.UserPromptSubmit || [];
|
feat(dream): add reflection skill and 12h reminder
Replay the last 24h of a repository — git log and reflog, CI, reviews,
memory, session transcripts — score every action as held, broke or unknown
against its evidence, harden the resulting hypotheses with dialectic, and
persist what survives. The objective is a measurably more confident next
run: a class of error counts as closed only once a test, check, hook or
written rule prevents it.
Derived improvements to the code and to the agent instructions are offered
as single-select questions, and the run ends in autotune and autoskill.
The reminder hook stamps into each repository's git dir, so every repo
carries its own twelve-hour cadence and the hook stays silent outside a
git repository.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-02 19:34:05 +02:00
|
|
|
const alreadyRegistered = JSON.stringify(data.hooks.UserPromptSubmit);
|
|
|
|
|
for (const skill of REMINDERS) {
|
|
|
|
|
if (alreadyRegistered.includes(`${skill}/hooks/reminder.sh`)) continue;
|
|
|
|
|
const reminder = path.join(path.dirname(settingsPath), "skills", skill, "hooks", "reminder.sh");
|
2026-07-25 18:24:53 +02:00
|
|
|
data.hooks.UserPromptSubmit.push({
|
|
|
|
|
hooks: [{ type: "command", command: `bash ${JSON.stringify(reminder)}` }],
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
feat(skills): rename shortcuts skill and auto-enable caveman/ponytail on install
Rename the portable conversation-shortcut skill from agent-shortcuts to
shortcuts and re-prefix every token to soc* (sobu, soco, socobu, socon,
sona, sote) so each token mirrors its command and never places two
consonants next to each other. make install and make project now also
register the caveman and ponytail marketplaces and enable both plugins in
the target's .claude/settings.json so their SessionStart hooks activate
every session; the merge is non-destructive, idempotent, and leaves an
unparseable settings.json untouched.
- skills/shortcuts/SKILL.md: new name and soc* token table
- tests/test_shortcuts.py: assert present, sorted, soc-prefixed, no cluster
- remove skills/agent-shortcuts and tests/test_agent_shortcuts.py
- scripts/enable-plugins.js: node JSON merge helper
- scripts/install.sh: run the helper after copying skills
- README.md: document the auto-enable behavior
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 14:59:17 +02:00
|
|
|
fs.writeFileSync(settingsPath, JSON.stringify(data, null, 2) + "\n");
|
feat(dream): add reflection skill and 12h reminder
Replay the last 24h of a repository — git log and reflog, CI, reviews,
memory, session transcripts — score every action as held, broke or unknown
against its evidence, harden the resulting hypotheses with dialectic, and
persist what survives. The objective is a measurably more confident next
run: a class of error counts as closed only once a test, check, hook or
written rule prevents it.
Derived improvements to the code and to the agent instructions are offered
as single-select questions, and the run ends in autotune and autoskill.
The reminder hook stamps into each repository's git dir, so every repo
carries its own twelve-hour cadence and the hook stays silent outside a
git repository.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-02 19:34:05 +02:00
|
|
|
console.log(`skills: enabled caveman + ponytail plugins and the ${REMINDERS.join(" + ")} reminders in ${settingsPath}`);
|