Skip to content

Commit 2cbb80b

Browse files
Drop scheduled routines and every skill the setup does not use
Routines that watch one site's CI and deploys are that project's automation, not setup config. Shipping them here meant a portable bundle carried one person's monitoring jobs, and installing the bundle overwrote whatever routines the machine already had. They belong next to the project they watch. The launchd templates and the install and verify steps that served them go too. Seven skills are deleted rather than shipped disabled. A skill that is not worth loading is not worth carrying, and "installed but off" is a state that invites re-enabling something already covered elsewhere: verification-before-completion, systematic-debugging, requesting-code-review, tokenmaxxing, vercel-deploy, spaceship, security-threat-model. ATTRIBUTION.md records why each one went. Their skillOverrides entries go with them, since an override naming a skill that no longer exists is dead config. 22 skills remain, all of them in use. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 07ff100 commit 2cbb80b

44 files changed

Lines changed: 38 additions & 3817 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/verify.sh

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,6 @@ else
3232
skip "json valid" "jq not installed"
3333
fi
3434

35-
# --- 3. launchd templates are valid plists --------------------------------------------------
36-
if command -v plutil >/dev/null; then
37-
errs=""
38-
for t in launchd/*.plist.tmpl; do
39-
[ -e "$t" ] || continue
40-
plutil -lint "$t" >/dev/null 2>&1 || errs="$errs\n$t"
41-
done
42-
[ -z "$errs" ] && ok "launchd templates" || bad "launchd templates" "$(printf '%b' "$errs")"
43-
else
44-
skip "launchd templates" "plutil not available (not macOS)"
45-
fi
46-
4735
# --- 4. skills are loadable ------------------------------------------------------------------
4836
# A skill with no description, or one longer than the configured listing cap, gets truncated
4937
# out of the listing and silently stops auto-triggering. That is the failure this catches.
@@ -91,10 +79,6 @@ hits=$(grep -rIn --exclude-dir=.git -E \
9179
. 2>/dev/null | head -5)
9280
[ -z "$hits" ] && ok "no committed secrets" || bad "no committed secrets" "$hits"
9381

94-
# --- 7. routines use gh, never scraped tokens or absent tools ----------------------------------
95-
hits=$(grep -rIln -e 'github_pat_' -e 'Vercel MCP' -e 'remote get-url.*sed' claude/scheduled-tasks 2>/dev/null)
96-
[ -z "$hits" ] && ok "routines use gh auth" || bad "routines use gh auth" "$hits"
97-
9882
# --- 8. no infrastructure identifiers ---------------------------------------------------------
9983
# This repo is public and its routines are templates. Real Vercel project or team IDs, Claude
10084
# Code environment IDs, and cloud routine trigger IDs identify live infrastructure, so they

README.md

Lines changed: 13 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
# vstack
22

33
One repo that installs a complete Claude Code setup on a Mac: skills that fire on their own,
4-
subagents, hooks, MCP servers, deploy scripts, and scheduled routines.
4+
subagents, hooks, MCP servers, and deploy scripts.
55

6-
Everything here used to live in four places at once. Some of it sat in `~/.claude`, some in
7-
`~/.config/agents`, some only in a cloud routine, and the parts that mattered most were the
8-
parts nothing tracked. Reinstalling meant remembering. Now it is one clone and one command.
6+
Everything here used to live in three places at once: some in `~/.claude`, some in
7+
`~/.config/agents`, and the parts that mattered most in nothing at all. Reinstalling meant
8+
remembering. Now it is one clone and one command.
99

1010
```bash
1111
git clone https://github.com/itsvedantkumar/vstack.git
@@ -55,13 +55,11 @@ Check a machine without changing it:
5555

5656
| Component | Count | Installs to |
5757
|---|---|---|
58-
| Skills | 29 (24 active, 5 off) | `~/.claude/skills/` |
58+
| Skills | 22 | `~/.claude/skills/` |
5959
| Subagents | 7 | `~/.claude/agents/` |
6060
| Slash commands | 15 | `~/.claude/commands/` |
6161
| Hooks | 4 | `~/.claude/hooks/` |
6262
| CLI wrappers | 8 | `~/.config/agents/bin/` |
63-
| Scheduled routines | 3 | `~/.claude/scheduled-tasks/` |
64-
| launchd timers | 3 | `~/Library/LaunchAgents/` (only with `--with-launchd`) |
6563
| MCP servers | 2 | merged into `~/.claude.json` |
6664

6765
Regenerate these counts with `find claude/skills -maxdepth 1 -mindepth 1 -type d | wc -l` and
@@ -92,8 +90,8 @@ back as the reason. Three blocks per session, then it stops, so an overnight run
9290
forever.
9391

9492
This repo gates itself with the same mechanism. Run `./.claude/verify.sh` and it checks shell
95-
syntax, JSON validity, plist validity, skill frontmatter and description lengths, hardcoded
96-
home paths, committed credentials, and a full `install.sh --dry-run`. To add the same gate to
93+
syntax, JSON validity, skill frontmatter and description lengths, hardcoded home paths,
94+
committed credentials, infrastructure identifiers, and a full `install.sh --dry-run`. To add the same gate to
9795
another repo, ask Claude for verification in that repo and the `create-verification-skill`
9896
skill writes one that fits its stack.
9997

@@ -107,20 +105,6 @@ The example deliberately names the Anthropic key `ANTHROPIC_SDK_API_KEY`. Claude
107105
`ANTHROPIC_API_KEY` and bills API credits against it instead of your subscription, so the
108106
shell wrapper strips that name from the environment and `doctor` fails if it is set.
109107

110-
## Scheduling
111-
112-
The three routines under `claude/scheduled-tasks/` are prompts. Scheduling them is a separate
113-
choice, and there are two lanes:
114-
115-
- **Cloud routines** at [claude.ai/code/routines](https://claude.ai/code/routines) run whether
116-
or not the Mac is awake. This is the better default.
117-
- **launchd timers** run locally. Install them with `./install.sh --with-launchd`.
118-
119-
Pick one lane. Running both doubles every job.
120-
121-
The three routines are templates, not live jobs. They carry `<owner>/<repo>` and
122-
`prj_YOUR_PROJECT_ID` placeholders, and each file opens with the list of values to replace.
123-
`./.claude/verify.sh` fails if a real Vercel, environment, or trigger ID lands in the repo.
124108

125109
## Health check
126110

@@ -135,11 +119,10 @@ Claude Code update: plugin updates have reverted config here before.
135119
## Layout
136120

137121
```
138-
claude/ settings, hooks, agents, commands, skills, scheduled-tasks
122+
claude/ settings, hooks, agents, commands, skills
139123
bin/ CLI wrappers installed to ~/.config/agents/bin
140124
shell/ zsh wrapper and env snippet
141125
mcp/ MCP server definitions merged into ~/.claude.json
142-
launchd/ plist templates, __HOME__ substituted at install time
143126
install.sh user-scope install, idempotent
144127
overlay.sh copies the config into a repo so cloud sessions get it
145128
```
@@ -171,11 +154,9 @@ directory, so a committed `.claude/` directory is the only config it can read. R
171154

172155
## Credits
173156

174-
The 29 skills come from four places: 18 ported from [pstack](https://github.com/cursor/plugins),
175-
7 from [Superpowers](https://github.com/obra/superpowers), 2 third-party (Apache 2.0 and MIT),
176-
and 2 written for this setup. Per-skill sources, licenses, and the reason each disabled skill
177-
is disabled are in `claude/skills/ATTRIBUTION.md`.
157+
The 22 skills come from two places: 18 ported from [pstack](https://github.com/cursor/plugins)
158+
and 4 from [Superpowers](https://github.com/obra/superpowers). Sources and licenses are
159+
recorded in `claude/skills/ATTRIBUTION.md`.
178160

179-
Five skills ship disabled through `skillOverrides` in `claude/settings.json`. They are kept
180-
rather than deleted because the originals live nowhere else, and a disabled skill costs no
181-
context. That file is the one place that decides what is active.
161+
Every skill here is one this setup actually uses. A skill that turned out to be redundant was
162+
deleted rather than shipped disabled: if it is not worth loading, it is not worth carrying.

bin/spaceship-mcp

Lines changed: 0 additions & 9 deletions
This file was deleted.

claude/scheduled-tasks/repo-health/SKILL.md

Lines changed: 0 additions & 48 deletions
This file was deleted.

claude/scheduled-tasks/watch-deploy-failures/SKILL.md

Lines changed: 0 additions & 100 deletions
This file was deleted.

claude/scheduled-tasks/weekly-yc-cto-audit/SKILL.md

Lines changed: 0 additions & 69 deletions
This file was deleted.

claude/settings.json

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,9 @@
88
"xlsx": "off",
99
"docx": "off",
1010
"pptx": "off",
11-
"tokenmaxxing": "off",
1211
"build-mcp-server": "off",
13-
"vercel-deploy": "off",
1412
"dataviz": "name-only",
1513
"pdf": "name-only",
16-
"spaceship": "name-only",
1714
"skill-creator": "name-only",
1815
"update-config": "name-only",
1916
"keybindings-help": "name-only",
@@ -25,9 +22,6 @@
2522
"run": "name-only",
2623
"simplify": "name-only",
2724
"security-review": "name-only",
28-
"security-threat-model": "name-only",
29-
"systematic-debugging": "off",
30-
"requesting-code-review": "off",
3125
"frontend-design:frontend-design": "name-only",
3226
"claude-mem:babysit": "off",
3327
"claude-mem:cloud-sync": "off",
@@ -47,8 +41,7 @@
4741
"claude-mem:what-the": "off",
4842
"claude-mem:wowerpoint": "off",
4943
"claude-mem:mem-search": "name-only",
50-
"claude-mem:smart-explore": "name-only",
51-
"verification-before-completion": "off"
44+
"claude-mem:smart-explore": "name-only"
5245
},
5346
"precomputeCompactionEnabled": true,
5447
"promptSuggestionEnabled": false,

0 commit comments

Comments
 (0)