{
  "markdown": "# gh-setup-skills\n\nFour skills for one-time GitHub repo initialization — the ones you run once,\nwhen standing up a new repo, rather than on every commit. Sync its labels to the\n10-label SSOT, create and wire the Projects v2 kanban board, scaffold the\nstandard `docs/` tree, and backfill the ai-metrics footer onto cards that\npredate automatic capture. Packaged as a single plugin named `gh-setup`,\ninstallable on six coding-agent harnesses.\n\nUnlike its sibling [`harness-skills`](https://github.com/dEitY719/harness-skills),\nthis repo owns no shared assets — it links out for the\n[per-harness tool mappings and the CI workflow](#shared-assets).\n\n## Skills\n\n| Skill | Invoke | What it does |\n|-------|--------|--------------|\n| `label-bootstrap` | `/gh-setup:label-bootstrap [--repo <owner/repo>] [--dry-run] [--prune]` | Force-syncs the 10-label SSOT's colors and descriptions onto a repo, renames the 3 alias labels (`bug`->`fix`, `documentation`->`docs`, `build`->`chore`) in place so existing issues keep them, and provisions the 2 pipeline-state labels. Deletes nothing unless `--prune`. |\n| `kanban-bootstrap` | `/gh-setup:kanban-bootstrap [--owner <login>] [--repo <name>] [options]` | Creates the Projects v2 board, links the repo, replaces the Status options with the 6-column workflow, sets the auto-archive window, and prints the remaining UI checklist. Delegates its label step to `label-bootstrap`. |\n| `docs-bootstrap` | `/gh-setup:docs-bootstrap [path] [--check\\|--apply\\|--dry-run] [--force]` | Scaffolds the 8-leaf kind-split `docs/` tree (`adr`, `product`, `design`, `architecture/{system,features}`, `testing`, `guides`, `public`), a `.gitkeep` per leaf, and one policy `docs/README.md`. Dry-run by default. |\n| `add-ai-metrics` | `/gh-setup:add-ai-metrics [<targets>] [--type issue\\|PR] [--date <d>] [--pace] [--limit] [--budget] [--dry-run]` | Retrofits the `tokens · human-h · ai-min` footer onto Issues/PRs created before capture was automatic. Idempotent — a card that already has the block is skipped, and bytes outside it are never touched. |\n\n`kanban-bootstrap` and `label-bootstrap` are a pair: the board skill runs the\nlabel skill's `lib/label-bootstrap.sh` in Step 5 rather than carrying its own\ninline label logic, so there is one label SSOT and one force-sync policy.\n`--no-bootstrap-labels` skips that step.\n\n`add-ai-metrics` is the odd one out in tempo: it is a backfill, run once against\na repo's history, not part of standing a repo up. It is here because it is the\nsame kind of job — a one-shot pass over a repo, not a per-commit habit.\n\n### Visual guides and worked examples (GitHub Pages)\n\n- `label-bootstrap` — [visual guide](https://deity719.github.io/gh-setup-skills/skill-guides/label-bootstrap.html) · [usage example](https://deity719.github.io/gh-setup-skills/skill-output/label-bootstrap-usage.html) (label SSOT to synced repo labels)\n- `kanban-bootstrap` — [visual guide](https://deity719.github.io/gh-setup-skills/skill-guides/kanban-bootstrap.html) · [usage example](https://deity719.github.io/gh-setup-skills/skill-output/kanban-bootstrap-usage.html) (repo coordinates to a Projects v2 board)\n- `docs-bootstrap` — [visual guide](https://deity719.github.io/gh-setup-skills/skill-guides/docs-bootstrap.html) · [usage example](https://deity719.github.io/gh-setup-skills/skill-output/docs-bootstrap-usage.html) (a directory path to a scaffolded docs/ tree)\n- `add-ai-metrics` — [visual guide](https://deity719.github.io/gh-setup-skills/skill-guides/add-ai-metrics.html) · [usage example](https://deity719.github.io/gh-setup-skills/skill-output/add-ai-metrics-usage.html) (issue/PR numbers to metrics footers)\n\nEach page is generated from a Markdown source under\n[`docs/skill-guides/`](docs/skill-guides) and [`docs/skill-output/`](docs/skill-output).\n\n## Requirements\n\n| Skill | Needs |\n|-------|-------|\n| `label-bootstrap` | An authenticated `gh` CLI with write access to the target repo. Repo resolves from `--repo`, else `gh repo view`. Missing write permission warns per label and continues rather than aborting. |\n| `kanban-bootstrap` | `gh` CLI with the **`project` token scope** (`gh auth refresh -h <host> -s project`) plus `jq`. Always targets `origin`; `$HOST` is derived from `origin`'s URL and carried on every call as `GH_HOST`, because `--repo` alone names no server. |\n| `docs-bootstrap` | Nothing but a shell and a writable target directory. No network, no `gh`. `--help` does not even touch the filesystem. |\n| `add-ai-metrics` | An authenticated `gh` CLI with write access. Resolves the target repo from the git remote; a missing remote is a stop, never a silent fallback. |\n\n## Install\n\n### Claude Code\n\n```\n/plugin marketplace add dEitY719/gh-setup-skills\n/plugin install gh-setup@gh-setup-skills\n```\n\n### Codex\n\n```\ncodex plugin install dEitY719/gh-setup-skills\n```\n\n### Kimi CLI\n\n```\nkimi plugin install dEitY719/gh-setup-skills\n```\n\n### Hermes Agent\n\n```\nhermes plugins install dEitY719/gh-setup-skills\n```\n\n### OpenCode\n\nSee [`.opencode/INSTALL.md`](.opencode/INSTALL.md).\n\n### Gemini CLI / Antigravity\n\n```\ngemini extensions install https://github.com/dEitY719/gh-setup-skills\n```\n\nAntigravity (`agy`) shares `~/.gemini`, so it inherits the install.\n\n## Harness support\n\nThese skills are `gh` CLI calls, `lib/*.sh` scripts, and file writes, so they\nport cleanly. **None of them uses Claude Code's `Skill()`, `WebFetch`, or\n`AskUserQuestion`** — `kanban-bootstrap` reaches its sibling by running\n`skills/label-bootstrap/lib/label-bootstrap.sh` directly, which is a plain shell\ncall, not a skill invocation. Every gap and its workaround is documented per\nharness in\n[`harness-skills/references/`](https://github.com/dEitY719/harness-skills/tree/main/references);\nread the one file for the harness you are on.\n\n| Skill | Claude Code | Codex | Kimi | Gemini / Antigravity | Hermes | OpenCode |\n|-------|:-----------:|:-----:|:----:|:--------------------:|:------:|:--------:|\n| `label-bootstrap` | full | full | full | full | full | full |\n| `kanban-bootstrap` | full | full, confirm in chat | full | full on Gemini, confirm in chat on Antigravity | full, confirm in chat | full, confirm in chat |\n| `docs-bootstrap` | full | full | full | full | full | full |\n| `add-ai-metrics` | full | full, confirm in chat | full | full on Gemini, confirm in chat on Antigravity | full, confirm in chat | full, confirm in chat |\n\n*confirm in chat* — two steps ask a question before proceeding:\n`kanban-bootstrap` asks once whether to hide the reserved columns when the repo\nlooks personal (it must never infer this from the collaborator count — that is\nthe privacy rule NF-3), and `add-ai-metrics` asks `Continue with N cards? [y/N]:`\nbefore touching more than 100 cards. Kimi (`AskUserQuestion`) and Gemini CLI\n(`ask_user`) have a structured question tool; Codex, Hermes, Antigravity, and\nOpenCode do not, so ask in the conversation and wait for a real reply. An\nauto-approve session setting is not the user's answer.\n\nThe `lib/*.sh` helpers under `label-bootstrap`, `kanban-bootstrap`, and\n`docs-bootstrap` are plain bash with no external UX library, and run identically\non every harness. Call them; do not reimplement them. `scaffold.sh` is\ndeliberately copy-paste safe — it can be run straight from a checkout without\nthe plugin installed at all:\n\n```\nbash skills/docs-bootstrap/lib/scaffold.sh ~/code/my-new-service --apply\nbash skills/label-bootstrap/lib/label-bootstrap.sh --repo owner/repo --dry-run\n```\n\n## Shared assets\n\nThis repo owns none — deliberately.\n\n- **Per-harness tool mappings** live in\n  [`harness-skills/references/`](https://github.com/dEitY719/harness-skills/tree/main/references)\n  (`{codex,kimi,gemini,antigravity,hermes,opencode}-tools.md`). That repo is\n  their sole owner; the other fourteen `*-skills` repos link there rather than\n  carrying copies, so one tool rename is one edit, not fifteen\n  (dEitY719/dotfiles#1410 F-5 / NF-2). The only condensed mirror here is\n  `.kimi-plugin/plugin.json`'s `skillInstructions`, because Kimi CLI cannot read\n  a reference file at load time — it points back to the canonical file.\n- **The reusable CI workflow** is\n  [`harness-skills/.github/workflows/skill-check.yml`](https://github.com/dEitY719/harness-skills/blob/main/.github/workflows/skill-check.yml)\n  (dEitY719/dotfiles#1410 D-10). See [CI](#ci).\n\n## Layout\n\nManifests live at the repo root and all point at one flat `skills/` directory:\n\n```\n.\n├── skills/{label-bootstrap,kanban-bootstrap,docs-bootstrap,add-ai-metrics}/\n│   ├── SKILL.md\n│   ├── references/\n│   └── lib/                                     (add-ai-metrics has none)\n├── .claude-plugin/{marketplace,plugin}.json     Claude Code\n├── .codex-plugin/plugin.json                    Codex\n├── .kimi-plugin/plugin.json                     Kimi CLI\n├── .hermes-plugin/{plugin.yaml,__init__.py}     Hermes Agent\n├── .opencode/plugins/gh-setup.js + INSTALL.md   OpenCode\n├── .agents/plugins/marketplace.json             Antigravity\n├── gemini-extension.json + GEMINI.md            Gemini CLI\n├── package.json\n├── CLAUDE.md · AGENTS.md -> CLAUDE.md\n└── LICENSE\n```\n\nOnly Claude Code understands a nested `plugins/<name>/skills/` layout. The other\nfive harnesses resolve manifests at the repo root and a skills tree at\n`./skills/`, so this repo keeps everything flat. See [`CLAUDE.md`](CLAUDE.md) for\nthe full rationale and contribution rules.\n\nSkill directory names dropped their old `gh-` / `devx-` prefixes in the\nmigration: `/gh-setup:gh-label-bootstrap` stutters, and the plugin namespace\nalready carries the meaning the prefix used to (dEitY719/dotfiles#1410 F-4). Unlike the\n`obsidian-` / `karakeep-` prefixes that `pkm-skills` kept, these named one\nservice, not two.\n\nThe `.kimi-plugin/` manifest is pre-provisioned: Kimi CLI is not installed on the\nmaintainer's machines yet, and shipping the manifest now costs nothing and saves\na migration later.\n\n## CI\n\n[`.github/workflows/validate.yml`](.github/workflows/validate.yml) calls the\nreusable workflow owned by `harness-skills`:\n\n```yaml\njobs:\n  validate:\n    uses: dEitY719/harness-skills/.github/workflows/skill-check.yml@main\n    with:\n      plugin-name: gh-setup\n      allow-emoji-paths: skills/add-ai-metrics/\n```\n\nIt validates manifests, skill frontmatter (the `name:` must be bare and match\nthe directory), progressive-disclosure line limits, the Codex description\nbudget, version agreement across all seven manifests, shell scripts, and the\nno-emoji rule. There is no local copy to keep in sync; a check added upstream\napplies here on the next run.\n\nThe one `allow-emoji-paths` exemption is `add-ai-metrics`: that skill exists to\nwrite the ai-metrics footer, whose design intentionally uses the chart / person\n/ robot glyphs (dEitY719/dotfiles#317 F-2, PR dEitY719/dotfiles#320), and its references quote the footer\nverbatim. Stripping them would break the format the skill is defined by. Nothing\nelse in the repo may carry an emoji.\n\n## Provenance\n\nThese skills were extracted from\n[`dEitY719/dotfiles`](https://github.com/dEitY719/dotfiles)\n(`claude/skills/{gh-label-bootstrap,gh-kanban-bootstrap,gh-add-ai-metrics,devx-docs-bootstrap}`)\nas a content snapshot at source commit\n`b5f7fd1347e56c9a70e9b67ba15e7c5b7f1cf9ac` — no history rewriting. That\n`claude/skills/` path is a historical citation only: the dotfiles copies were\ndeleted in Phase 4-1 of that repo's migration (commit `ad0d33d5`,\ndEitY719/dotfiles#1410 NF-1 / NF-3). Behaviour is unchanged from the snapshot; only the\nnamespace moved, from `gh:` / `devx:` to `gh-setup:`, and the directory names\nlost their now-redundant prefixes.\n\nThis is Phase 2 of the dEitY719/dotfiles#1410 migration. `packaging-skills` was Phase 0,\nand `harness-skills` was Phase 1 and is the sibling that owns the shared assets\nthis repo links to.\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n",
  "bytes": 11834,
  "sha": "7532587f2495d57b4ed6f81f9cd848a51a043173951285e4217f70e14fe5e372",
  "repo_slug": "deity719/gh-setup-skills",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_deity719_gh_setup_skills_62aad6c7/readme"
}