From phillit
One-time PhilLit workspace setup — checks uv and jq, scaffolds .env (pre-filling keys already set in the environment), and merges the permission rules into this directory's settings so literature reviews run without per-command prompts. Use when a user first runs PhilLit in a directory, or when reviews prompt repeatedly for Bash.
How this skill is triggered — by the user, by Claude, or both
Slash command
/phillit:setupThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Run this once in the directory where the user will create reviews.
Run this once in the directory where the user will create reviews.
Communication style: keep every user-facing message to a sentence or two of plain, non-technical language. Do everything you can on the user's behalf; ask only for what only they can provide.
[ -x "${PHILLIT_ROOT:-}/bin/phillit-run" ] && echo ok || echo missing,
command -v uv, and command -v jq.
missing, the plugin's environment isn't loaded in this
session (PHILLIT_ROOT unset, empty, or stale — typically the plugin was installed
or updated mid-session; the bridge only runs at session start), so every later step
would fail with a cryptic "No such file or directory". Tell the user: "One quick
step: please restart Claude Code in this folder, then run /phillit:setup again."
and stop.brew install jq /
apt install jq / choco install jq) and stop — jq is required by the
BibTeX-validation hook and is otherwise a silent clean-install failure.bash "$PHILLIT_ROOT/bin/phillit-run" skills/setup/scripts/setup_workspace.py --plugin-root "$PHILLIT_ROOT" --dry-run
Then summarize what will happen in 2–3 short bullets — do not dump the settings JSON
(show it only if the user asks for details):
.phillit folder marker and a .env file for API keys--dry-run. The script pre-fills
.env with any keys already set in the user's environment and prints which ones; if it
found some, tell the user (e.g. "Your Brave key was already set up — I reused it.")..env yourself with the answers — don't make the user
open a file.
CROSSREF_MAILTO — just the user's email address; ask for it and fill
OPENALEX_EMAIL with the same addressBRAVE_API_KEY — the one thing the user must obtain themselves: a free key from
https://brave.com/search/api/S2_API_KEY (https://www.semanticscholar.org/product/api)
and CORE_API_KEY (https://core.ac.uk/services/api) improve search coverage and speed.bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/check_setup.py
and report in one line: "Setup complete — ask me for a literature review whenever you're
ready", or exactly what is still missing and how to fix it.allow
rules until the workspace is trusted. Check (prefer the $PWD entry; fall back to the
physical path only when $PWD has no entry at all — under a symlinked cwd, e.g.
OneDrive or /var → /private/var, .claude.json may key either form):
CFG="${CLAUDE_CONFIG_DIR:+$CLAUDE_CONFIG_DIR/.claude.json}"
jq -r --arg d "$PWD" --arg p "$(pwd -P)" \
'((.projects[$d] // .projects[$p] // {}).hasTrustDialogAccepted // false)' \
"${CFG:-$HOME/.claude.json}"
true (or the check itself fails): say nothing — permissions are already live.false: end the setup with this, prominently, as the final line:
"One last step: restart Claude Code in this folder and choose 'Yes, I trust this
folder' when asked — PhilLit's permissions only take effect after that."/plugin, go to Marketplaces, and turn on auto-update for phillit
(or run /plugin update phillit@phillit whenever you want the latest)."If Claude still prompts for every command later (or PhilLit runs non-interactively), the workspace trust dialog was likely declined — Claude Code ignores allow rules in .claude/settings.json in untrusted directories.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.
Provides protocol-based dependency injection patterns for testable Swift code, enabling mocking of file system, network, and external APIs with Swift Testing.
npx claudepluginhub ai-4-phi/phillit