xiduzo/wtf/wtf-setup
- community
Checking that the SKILL.md file is still in the repository.
This skill should be used when a user wants to set up WTF in a repository or check that the environment is ready for it — for example "set up wtf", "is wtf ready", "install wtf templates", or "a new dev joined, set them up". Verifies the GitHub CLI and its auth, installs the required gh extensions and the issue and PR templates, configures issue classification, planning, feature scope, and delivery mode, and registers the hooks. Run once per repo when onboarding, or when a contributor joins the project.
Install
npx vskill@latest install xiduzo/wtf/wtf-setupSKILL.md
Setup
Pre-flight check and installer for the WTF workflow.
Validate the GitHub CLI. Install required extensions. Make sure .github/ISSUE_TEMPLATE/ holds all required templates.
Set up issue classification (native GitHub issue types or labels) and the lifecycle labels.
Install the PR template. Agents and humans can then create structured issues and pull requests.
Process
1. Verify gh is installed
If gh is not found, tell the user that the GitHub CLI is required. Link them to https://cli.github.com. Stop. Do not continue until gh is installed.
2. Verify gh is authenticated
If gh is not authenticated, tell the user to run gh auth login. Stop. Do not continue until authentication is confirmed.
3. Check and install required extensions
Check the output for all three extensions below. If an extension is missing, install it:
If installation fails (for example network error or permissions), warn the user. Note the failure for the final status report. Without gh-sub-issue or gh-issue-dependency, relationship tracking stays unavailable until the extension is installed. Without gh-stack, Trace PRs still stack by base branch, but GitHub renders no stack map. wtf.create-pr then keeps the "stacked PR" note in the PR body (see ../references/branch-setup.md "Native stacks").
After you try installation, verify the command syntax for each newly installed extension:
Record three booleans for the final report:
gh-sub-issue-available: true ifyahsan2/gh-sub-issueis installed and workinggh-issue-dependency-available: true ifxiduzo/gh-issue-dependencyis installed and workinggh-stack-available: true ifgithub/gh-stackis installed and working
4. Detect repo context
If this fails (not inside a git repo, or no GitHub remote), warn the user. Note that issue creation will not work until the repo is connected to GitHub. Continue to the template check anyway.
4b. Verify GitHub permissions
The workflow needs the authenticated user to manage labels and create issue relationships (sub-issues, dependencies).
Both need write access to the repo. The token needs the repo scope (or public_repo for public repos).
Check token scopes:
Required scopes (any of):
repo— full control (private + public repos)public_repo— sufficient for public repos only
If neither scope is present, tell the user to refresh auth with the right scopes:
Stop until the user re-runs setup.
Check repo write permission:
The user must have admin: true, maintain: true, or push: true. If the user has only triage or pull, warn:
⚠️ You have read-only access to this repo. Label creation and issue linking will fail. Ask a maintainer for write access or fork the repo.
Record two booleans for the final report:
token-scopes-ok: true ifrepoorpublic_reposcope is presentrepo-write-ok: true ifadmin,maintain, orpushis true
If either is false, skip label creation in step 7. Warn that sub-issue and dependency creation will fail at runtime.
5. Check issue templates
Check whether .github/ISSUE_TEMPLATE/ exists and holds all four required templates:
Required files:
BUG.mdEPIC.mdFEATURE.mdTRACE.md
First resolve where this skill's payload is installed. npx skills add drops wtf.setup under the skills root (~/.claude/skills/wtf.setup, .claude/skills/wtf.setup, or the .agents/skills equivalent). The bundled files (references/, shared-references/, hooks/) are included inside it.
Probe in order. Keep the first that exists. Reuse $SETUP_DIR for every copy below:
For each missing file, copy it from this skill's bundled references at $SETUP_DIR/references/:
Copy only files that are missing. Do not overwrite existing templates. After copying, list the final contents of .github/ISSUE_TEMPLATE/ to confirm.
Legacy `TASK.md`. If .github/ISSUE_TEMPLATE/TASK.md exists, it is a leftover: WTF write paths create Traces, not Tasks. Existing Task issues stay readable (legacy reads in ../references/issue-classification.md). Call AskUserQuestion (per ../references/questioning-style.md):
- question: "A legacy Task template is present. Remove it?"
- header: "Legacy template"
- options:
- Remove it (recommended) →
git rm .github/ISSUE_TEMPLATE/TASK.md - Keep it → note it in the status report
6. Check PR template
Check whether .github/pull_request_template.md exists:
If it is missing, copy it from the skill's bundled references (use $SETUP_DIR from step 5):
Do not overwrite the file if it already exists.
7. Choose the issue-classification mode and provision it
WTF classifies every issue as an Epic, Feature, Trace, or Bug.
There are two mechanisms. One is native GitHub issue types (an organization-only feature). That leaves labels free for your own segmentation. The other is the epic/feature/trace/bug labels (portable to any repo).
See ../references/issue-classification.md. Pick the mode once here. Record it in .wtf/config.json so every skill resolves it the same way. Lifecycle labels (implemented, designed, verified) are always created in both modes.
Step A — detect the owner type:
Step B — pick the mode.
- If
OWNER_TYPEis notOrganization(a personal account, or detection failed): native issue types are unavailable. GitHub gates them to organizations. SetCLASS_MODE=labelsand tell the user plainly: "This is a personal-account repo, so GitHub issue types are not available (they are org-only). WTF will classify with the `epic`/`feature`/`trace`/`bug` labels." Skip to Step D.
- If
OWNER_TYPEisOrganizationandrepo-write-okandtoken-scopes-ok(from step 4b) are both true, callAskUserQuestion(per../references/questioning-style.md): - question: "This repo is in an org, so WTF can classify issues with native GitHub issue types (Epic/Feature/Trace/Bug) instead of labels — leaving labels free for your own segmentation like
phase-2. Use native issue types?" - header: "Classification"
- options:
- Native issue types (recommended) →
CLASS_MODE=types - Labels →
CLASS_MODE=labels
If write or token permissions are missing, do not offer types. Provisioning needs org-owner rights. Set CLASS_MODE=labels and note it.
Step C — provision native types (only when CLASS_MODE=types).
Run the Provision native types block from ../references/issue-classification.md. It creates Epic and Trace (Task/Bug/Feature ship as org defaults — the Task default stays unused).
Then verify all four resolved. If any is missing (for example you are not an org owner), fall back to labels:
When this falls back, warn that native types need org-owner rights. WTF will use labels instead.
Step D — create labels. Always create the lifecycle labels.
Create the kind labels (epic/feature/trace/bug) only in `labels` mode. In types mode omit them on purpose so the label space stays free for your own segmentation.
--force is idempotent. It updates color/description if the label already exists. Otherwise it creates the label:
If any label creation fails (for example insufficient permissions), warn the user. The affected skills fall back to creating labels on first use.
Step D (cont.) — align the issue templates with the mode.
In types mode, rewrite each copied .github/ISSUE_TEMPLATE/*.md. Make its kind come from the native type rather than a label.
Flip the labels: <kind> frontmatter line to type: <Kind>. (type is a supported template frontmatter key alongside title/labels/assignees.)
This keeps issues opened manually from the GitHub UI typed, not labelled. The label space stays free.
In labels mode leave the templates as they are. The rewrite is conservative. It only touches an exact single labels: <kind> line. Customized multi-label templates are left alone:
Step E — record the mode so every skill resolves it the same way:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/wtf.setup/SKILL.md
Popularity
- Repository stars
- 7
- Repository forks
- 2
- 7-day trend score
- 10
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/xiduzo/wtf/wtf-setup)