~ / rigs / joshuafolkken / kit

joshuafolkken/kit

AI assistant setup, plus an optional GitHub workflow.

↗ GitHub ★ 0 MIT updated today project Claude CodeCodexCursorGemini CLI Claude plugin
share on X
ARCHETYPE
YOLO Cowboy
Permissions? Never heard of 'em. Ships at the speed of `--dangerously-skip-permissions`.
CONTEXT TAX · EVERY TURN
~5.1k tokens
Moderate · median rig: 2.3k · breakdown
GUARDRAILS
3/5
Blocks destructive commands · Protects secrets · Pre-tool screening hook · details

Copy this rig

# review before running: this installs third-party code
$ claude mcp add --transport http svelte https://mcp.svelte.dev/mcp
$ npx degit joshuafolkken/kit/.claude ./rig-kit  # inspect, then merge into .claude/

MCP servers are added to Claude Code at local scope; env vars are shown as YOUR_… placeholders — we never store values. Files are fetched with degit into a separate folder so you can review before merging.

$ claude mcp add --transport http svelte https://mcp.svelte.dev/mcp
$ npx degit joshuafolkken/kit/.claude/skills/dependency-update .claude/skills/dependency-update
$ npx degit joshuafolkken/kit/.claude/skills/epic-commands .claude/skills/epic-commands
$ npx degit joshuafolkken/kit/.claude/skills/verify-ui .claude/skills/verify-ui
$ npx degit joshuafolkken/kit/.claude/skills/workflow-commands .claude/skills/workflow-commands
$ curl -fsSL --create-dirs -o .claude/agents/investigator.md https://raw.githubusercontent.com/joshuafolkken/kit/main/.claude/agents/investigator.md

Merge into .claude/settings.json (project) or ~/.claude/settings.json (user). Hook commands reference scripts in the source repo — copy those too.

{
  "permissions": {
    "deny": [
      "Bash(rm -rf *)",
      "Bash(rm -rf /*)",
      "Bash(rm -fr *)",
      "Bash(gh repo delete*)",
      "Bash(gh repo archive*)",
      "Bash(gh pr close*)",
      "Read(./.env)",
      "Bash(git push --force*)",
      "Bash(git push -f*)",
      "Bash(git push *--force*)",
      "Bash(git push * -f)",
      "Bash(git push * -f *)",
      "Bash(git push * +*)",
      "Bash(git push *--delete*)",
      "Bash(git push -d*)",
      "Bash(git push * -d)",
      "Bash(git push * -d *)",
      "Bash(git branch -d*)",
      "Bash(git branch -D*)",
      "Bash(git branch --delete*)",
      "Bash(gh api *DELETE*git/refs/heads/*)",
      "Bash(gh api *git/refs/heads/*DELETE*)",
      "Bash(git add*)",
      "Bash(git stage*)",
      "Bash(git rm*)",
      "Bash(git mv*)",
      "Bash(git reset*)",
      "Bash(git restore --staged*)",
      "Bash(git restore -S*)",
      "Bash(git commit*)",
      "Bash(gh pr merge*)",
      "Bash(gh api *pulls/*/merge*)",
      "Bash(gh api graphql*mergePullRequest*)",
      "Bash(sudo *)"
    ]
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash|Edit|Read|Write|AskUserQuestion",
        "hooks": [
          {
            "type": "command",
            "command": "project_root=\"$(env -u GIT_ALTERNATE_OBJECT_DIRECTORIES -u GIT_COMMON_DIR -u GIT_DIR -u GIT_INDEX_FILE -u GIT_NAMESPACE -u GIT_OBJECT_DIRECTORY -u GIT_WORK_TREE git rev-parse --show-toplevel 2>/dev/null || git rev-parse --show-toplevel)\" &&"
          }
        ]
      }
    ]
  }
}

MCP servers (1)

serversourceest. tokens
mcp.svelte.dev · "svelte" remote · remote 2.5k

Skills (4)

Subagents (1)

investigator
model: sonnet
Read-only investigation unit for the pre-implementation reading — finds out how an Issue's subject currently works and returns the conclusion with its `file:line` citations, never the file text. Dispa

Hooks (5)

eventmatcherruns
SessionStartstartupproject_root="$(env -u GIT_ALTERNATE_OBJECT_DIRECTORIES -u GIT_COMMON_DIR -u GIT_DIR -u GIT_INDEX_FILE -u GIT_NAMESPACE -u GIT_OBJECT_DIRECTORY -u GIT_WORK_TREE git rev-parse --show-toplevel 2>/dev/null || git rev-parse --show-toplevel)" &&
UserPromptSubmit*project_root="$(env -u GIT_ALTERNATE_OBJECT_DIRECTORIES -u GIT_COMMON_DIR -u GIT_DIR -u GIT_INDEX_FILE -u GIT_NAMESPACE -u GIT_OBJECT_DIRECTORY -u GIT_WORK_TREE git rev-parse --show-toplevel 2>/dev/null || git rev-parse --show-toplevel)" &&
PreToolUseBash|Edit|Read|Write|AskUserQuestionproject_root="$(env -u GIT_ALTERNATE_OBJECT_DIRECTORIES -u GIT_COMMON_DIR -u GIT_DIR -u GIT_INDEX_FILE -u GIT_NAMESPACE -u GIT_OBJECT_DIRECTORY -u GIT_WORK_TREE git rev-parse --show-toplevel 2>/dev/null || git rev-parse --show-toplevel)" &&
PostToolUseEdit|Writeproject_root="$(env -u GIT_ALTERNATE_OBJECT_DIRECTORIES -u GIT_COMMON_DIR -u GIT_DIR -u GIT_INDEX_FILE -u GIT_NAMESPACE -u GIT_OBJECT_DIRECTORY -u GIT_WORK_TREE git rev-parse --show-toplevel 2>/dev/null || git rev-parse --show-toplevel)" &&
Stop*project_root="$(env -u GIT_ALTERNATE_OBJECT_DIRECTORIES -u GIT_COMMON_DIR -u GIT_DIR -u GIT_INDEX_FILE -u GIT_NAMESPACE -u GIT_OBJECT_DIRECTORY -u GIT_WORK_TREE git rev-parse --show-toplevel 2>/dev/null || git rev-parse --show-toplevel)" &&

Permissions

deny (34)
Bash(rm -rf *)
Bash(rm -rf /*)
Bash(rm -fr *)
Bash(gh repo delete*)
Bash(gh repo archive*)
Bash(gh pr close*)
Read(./.env)
Bash(git push --force*)
Bash(git push -f*)
Bash(git push *--force*)
Bash(git push * -f)
Bash(git push * -f *)
Bash(git push * +*)
Bash(git push *--delete*)
Bash(git push -d*)
Bash(git push * -d)
Bash(git push * -d *)
Bash(git branch -d*)
Bash(git branch -D*)
Bash(git branch --delete*)
Bash(gh api *DELETE*git/refs/heads/*)
Bash(gh api *git/refs/heads/*DELETE*)
Bash(git add*)
Bash(git stage*)
Bash(git rm*)
Bash(git mv*)
Bash(git reset*)
Bash(git restore --staged*)
Bash(git restore -S*)
Bash(git commit*)
Bash(gh pr merge*)
Bash(gh api *pulls/*/merge*)
Bash(gh api graphql*mergePullRequest*)
Bash(sudo *)
ask (0)
—
allow (1)
Bash(*)

Similar rigs

copied ✓