Setup project skills
Configure a repository so the generic workflow skills (start-issue, qa-local, finalize-feature, loop) know its issue tracker, branching model, stack, quality gates, and UI/API topology (full-stack vs companion repos). Works for any language or framework. Run once per repo before the other delivery skills.From its SKILL.md
npx -y skills add TomWebwalker/skills --skill setup-project-skillsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.6 KB, as published. Nobody here has run it
This skill writes per-repo configuration that the generic workflow skills read at runtime. It is prompt-driven: detect what you can, show findings, confirm with the user, then write the files. Do not silently guess — confirm each axis.
The configuration lives in five files under docs/agents/ in the target repo
(the current working directory), plus a pointer block in CLAUDE.md/AGENTS.md.
Annotated schemas for each file are bundled at templates/ next to this SKILL.md —
read them first; they define every key the skills depend on, and each ends with
worked examples across several ecosystems.
Stay stack-neutral while detecting. This repo may be backend, frontend, a CLI, a
library, or none of those, in any language. Do not assume Node, a browser, or a
particular tracker. If a key doesn't apply (no dev server, no duplication check, no
tracker), write the empty/false/none value rather than inventing something.
Steps
-
Detect. Inspect the repo without writing anything yet.
Language and package manager — look for the manifest that exists:
file language / manager package.json(+pnpm-lock.yaml/yarn.lock/bun.lockb)JS/TS pyproject.toml,requirements*.txt,Pipfile,uv.lock,poetry.lockPython go.modGo Cargo.tomlRust pom.xml,build.gradle{,.kts}JVM *.csproj,*.sln,Directory.Build.props.NET GemfileRuby composer.jsonPHP mix.exs,Package.swift,pubspec.yaml,CMakeLists.txt,MakefileElixir / Swift / Dart / C++ / make Read the manifest's script/task section (npm
scripts,Makefiletargets,pyprojecttool sections, Gradle tasks,justfile,Taskfile.yml) for the real install/dev/test/lint/build commands. Prefer aMakefile/justfiletarget over guessing a raw toolchain command when one exists.Layout and source paths — monorepo markers (
nx.json,turbo.json,pnpm-workspace.yaml,go.work, Cargo workspace, Gradle multi-project) vs a single app. Derivesource_pathsfrom where first-party code actually lives (src,app,lib,cmd,internal,pkg,apps+libs,src/main/java).QA mode — is there a UI to click (
qa_mode: browser), an HTTP surface (OpenAPI spec, route files,Dockerfileexposing a port →api), a binary entry point (cmd/,bin/, console-script entry →cli), or is it a library with no manual QA (none)?Topology — does this repo own both UI and API (
full-stack), only the UI (frontend), only the API/service (backend), or neither (standalonefor a CLI/library/infra)? Heuristics: UI framework deps with no server routes → frontend; HTTP framework / OpenAPI with no UI app → backend; both present in one tree → full-stack; binary/cmd//library layout → standalone. Look for sibling checkouts next to this repo (../…-backend,../…-frontend,../…-api,../…-ui) and README links to a companion remote.Services —
docker-compose.y*ml,compose.y*ml, dev container config, or aMakefiletarget that starts dependencies.Issue tracker — tracker references in
CLAUDE.md/AGENTS.md, README, PR and issue templates, recent branch names,.github/config; and which tracker MCP tools or CLIs (gh,glab,jira) are actually available in this session.VCS —
git symbolic-ref refs/remotes/origin/HEADandgit branch -afor the base branch;git log --oneline -30 --format=%sand recent branch names for the commit and branch conventions actually in use.Quality gates — CI workflow files are the source of truth (
.github/workflows/,.gitlab-ci.yml,Jenkinsfile,azure-pipelines.yml). Also check.pre-commit-config.yaml,.husky/,lefthook.yml,commitlint.config.*,.gitlint, and any Sonar/Qodana config. Gates should mirror what CI runs — nothing more, nothing less. -
Confirm. Present what you detected per axis and ask the user to correct anything. Resolve at minimum: tracker type + id pattern + status names; base branch + branch pattern + PR target; language + layout + source paths + qa mode + the command map; topology role (full-stack / frontend / backend / standalone) and, when the role is frontend or backend, the companion path and/or URL; commit convention + which gates CI enforces. Say explicitly which values you are leaving empty and why.
For topology, ask explicitly — do not infer this alone from
qa_mode:- Is this a full-stack repo (UI and API in one tree)?
- Or a frontend repo? If yes: where is the backend/API repo (local path and, optionally, remote URL)?
- Or a backend repo? If yes: where is the frontend/UI repo (local path and, optionally, remote URL)?
- Or standalone (CLI, library, infra — no UI/API sibling)?
-
Write
docs/agents/. Create the five files from the bundledtemplates/, substituting confirmed values into the frontmatter and rewriting the prose body to describe this repo. Delete the "Worked examples" and "Adapting" sections — they belong to the template, not to the generated config:docs/agents/issue-tracker.mddocs/agents/vcs.mddocs/agents/stack.mddocs/agents/quality-gates.mddocs/agents/topology.md
-
Write the pointer block. Add (or update) an
## Agent skillssection inCLAUDE.md(orAGENTS.mdif that's what the repo uses):## Agent skills Workflow skills read their configuration from `docs/agents/`: - `issue-tracker.md` — how to fetch/update/comment on tickets - `vcs.md` — base branch, branch naming, PR target - `stack.md` — language, commands, QA mode, fix agent - `quality-gates.md` — commit rules, pre-push checks, and /loop settings - `topology.md` — full-stack vs split UI/API, and where the companion repo lives To re-run setup: `/setup-project-skills`. -
Verify. Before reporting, dry-run the cheapest configured command (e.g.
commands.lintor--versionon the toolchain) to confirm the command map is real, not aspirational. Report anything that failed instead of leaving it to be discovered mid-workflow. Iftopology.mdnames a companionpath, check that it exists on disk; if missing, note that/loopwill fall back tourl. -
Report. Summarize the five files, note which steps the workflow skills will skip given the config (no tracker → no ticket steps;
qa_mode: none→ no manual QA; emptydev→ qa-local can't serve the app;topology.rolefull-stack or standalone →/loopskips companion knowledge). If/loopwill be used, say whether the configured builder/checker subagents are actually installed — if not, it runs both roles inline, which works but shares this conversation's context.
Notes
- Idempotent: if
docs/agents/*.mdalready exist, read them, show current values, and update in place rather than clobbering. - Keep each file minimal and true to the repo — delete options that don't apply instead of leaving dead config.
- Prefer commands the repo already scripts (
make test) over raw toolchain invocations, so config doesn't drift from what humans run.