[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6AE50BA886Y2F6E0S2EG5GD":3,"skill-same:01M6AE50BA886Y2F6E0S2EG5GD":176},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":57,"ownerHtmlUrl":58,"ownerBlogUrl":59,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M6AE50BA886Y2F6E0S2EG5GD","repo-standardizer",null,"Polish any GitHub repository's surface — labels (emoji rating tiers, P0–P3 priority, impact severity), issue forms, PR template, CI workflows, CODEOWNERS, rulesets, docs. Repo meta & config only — no code logic touched. Use when creating a new repo or polishing an existing one.","github\u002Fawesome-copilot","github","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F9919?v=4","01M6AC83DS133TPXFSP1DHNCC6","GitHub","01M6AD3PBDYPK7NVFJNJ66Y8RS",41046,"MIT","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,9],"repo standardizer","repo","template","new","rating","when","labels","impact","no code","forms","issue","ci workflows","only","docs","polish","severity","Meta","ci","repository","code","pr","config","workflows","2026-11-10 10:12:30",false,"---\nname: repo-standardizer\ndescription: Polish any GitHub repository's surface — labels (emoji rating tiers, P0–P3 priority, impact severity), issue forms, PR template, CI workflows, CODEOWNERS, rulesets, docs. Repo meta & config only — no code logic touched. Use when creating a new repo or polishing an existing one.\n---\n\n# GitHub Repo Standardizer\n\nDetect a repository's current state, then polish its surface: issue forms,\nPR template, label taxonomy, CI, CODEOWNERS, rulesets, docs. Works on\nrepo metadata and config files only — code logic is never touched.\n**Idempotent** — safe to re-run; fills gaps and reconciles drift without\nduplicating or clobbering.\n\n## When to use\n\n- User says \"standardize \u002F tidy up \u002F professionalize this repo\"\n- A new repo was just created and needs templates, labels, CI, and rules from day one\n- A repo looks bare: no templates, no labels, no CI, no branch protection\n\n## Preflight (mandatory, in order)\n\n> **Requires**: `gh` CLI (authenticated), `git`, `jq`, `python3` — verify\n> they exist before starting (`which gh git jq python3`).\n\n### 1. Authenticate — check gh login first\n\n```bash\ngh auth status 2>\u002Fdev\u002Fnull || echo \"NOT_LOGGED_IN\"\n```\n\n- **Logged in** → continue; print `gh api user -q .login` so the user knows which account will act.\n- **Not logged in** → STOP. Tell the user (do not guess):\n  1. Run `gh auth login` (web\u002Fdevice flow), **or**\n  2. Export a token: `export GH_TOKEN=ghp_xxx` — needs `repo`, `workflow` (for CI files) and, for org repos, `admin:org` (or `admin:repo_hook` \u002F org membership admin) scopes.\n  - Never paste tokens into chat, logs, or files. If the user pastes a token in chat, advise them to revoke it and re-issue.\n  - If `gh auth login` is impossible in this environment (headless), suggest `gh auth login --with-token` reading from a file the user created.\n\nVerify the acting account can write to the target:\n\n```bash\n# user repos: no extra check needed beyond token scopes\n# org repos: must be a member\u002Fadmin of the org\ngh api \"orgs\u002FORG\u002Fmemberships\u002F$(gh api user -q .login)\" -q .role 2>\u002Fdev\u002Fnull || echo \"NO_ORG_ACCESS\"\n```\n\n- `admin`\u002F`member` → OK. `404` → stop and ask the user to add the account to the org first.\n\n### 2. Detect repository type\n\n```bash\ngh repo view OWNER\u002FREPO --json name,owner,visibility,defaultBranchRef,isArchived,isFork \\\n  -q '{name:.name, ownerType:.owner.type, visibility:.visibility, defaultBranch:.defaultBranchRef.name, archived:.isArchived, fork:.isFork}'\n```\n\n| Field | Meaning | Consequence |\n|---|---|---|\n| `ownerType` | `User` = personal, `Organization` = org | Org repos can also use org-level rulesets; both support repo-level rulesets |\n| `visibility` | `PUBLIC` \u002F `PRIVATE` \u002F `INTERNAL` | Private: skip public-facing docs pressure, keep CI secrets minimal; public: README badges + CONTRIBUTING\u002FSECURITY matter |\n| `archived` \u002F `fork` | Read-only \u002F fork | **Skip write modules**; report why |\n\nIf the repo was not explicitly named by the user, confirm before touching an\norg or private repository.\n\n### 3. Audit current state\n\n```bash\ngh label list --repo OWNER\u002FREPO --limit 200\ngh api repos\u002FOWNER\u002FREPO\u002Fcontents\u002F.github -q '.[].path' 2>\u002Fdev\u002Fnull || echo \"no .github dir\"\ngh api repos\u002FOWNER\u002FREPO\u002Fcontents\u002F.github\u002Fworkflows -q '.[].name' 2>\u002Fdev\u002Fnull || echo \"no workflows\"\ngh api repos\u002FOWNER\u002FREPO\u002Frulesets -q '.[] | {name:.name, enforcement:.enforcement}' 2>\u002Fdev\u002Fnull || echo \"no rulesets\"\ngh api repos\u002FOWNER\u002FREPO\u002Fbranches -q '.[].name' 2>\u002Fdev\u002Fnull\nfor f in README.md CONTRIBUTING.md SECURITY.md LICENSE .gitignore; do\n  gh api \"repos\u002FOWNER\u002FREPO\u002Fcontents\u002F$f\" -q .name 2>\u002Fdev\u002Fnull || echo \"missing: $f\"\ndone\n```\n\n### 4. Detect test framework (for CI module)\n\nCheck for these signals (first match wins):\n\n```bash\ngh api repos\u002FOWNER\u002FREPO\u002Fcontents\u002Fpackage.json -q .name 2>\u002Fdev\u002Fnull   # node → templates\u002Fci-node.yml\ngh api repos\u002FOWNER\u002FREPO\u002Fcontents\u002Fpyproject.toml -q .name 2>\u002Fdev\u002Fnull # python → templates\u002Fci-python.yml\ngh api repos\u002FOWNER\u002FREPO\u002Fcontents\u002Fgo.mod -q .name 2>\u002Fdev\u002Fnull         # go → templates\u002Fci-go.yml\ngh api repos\u002FOWNER\u002FREPO\u002Fcontents\u002FCargo.toml -q .name 2>\u002Fdev\u002Fnull     # rust → templates\u002Fci-rust.yml\n```\n\nNo signal → propose the generic CI (or ask the user whether CI is wanted at all).\n\n### 5. Ask about language (before planning)\n\n- Ask the user which language `CONTRIBUTING.md` and the PR template should be\n  written in (default: English, or the project's primary language for local\n  projects). Translate the templates accordingly when generating — never\n  assume a language.\n- (README languages are asked separately in Module F.)\n\n### 6. Ask about automation (decides the Governance labels)\n\nAsk the user whether the repo has any **automation bots or AI writers**\nrunning on it — e.g. dependabot, a Stale bot, ClawSweeper, or an AI coding\nagent that auto-files PRs \u002F auto-fixes issues.\n\n- **Why ask**: `r:*` \u002F `clawsweeper:*` \u002F `triage:*` \u002F `close:*` labels are\n  **signal labels, not categories** — a bot reads them and acts (auto-close,\n  auto-lock, auto-fix, auto-merge). Without running automation those labels\n  are dead weight, so the answer decides whether the Governance dimension is\n  added at all (Module A, Step 2).\n- **Yes** → plan the `Governance \u002F auto-close rules` dimension (add only the\n  `r:*` rules matching the project's real reject criteria).\n- **No** → skip that dimension entirely — never add `r:*` \u002F bot labels to a\n  repo with no automation.\n\n## Workflow\n\n1. **Preflight** (above). If auth or access fails, stop with a clear message.\n2. **Dry-run plan** — show the user a concise table of what will be created\u002Fupdated\u002Fskipped. Get confirmation for: rulesets, branch deletion\u002Fprotection changes, org-level changes, and anything destructive.\n3. **Apply modules** (each idempotent; run in this order).\n4. **Verify** — re-query and print an `applied \u002F skipped \u002F failed` checklist.\n\n### Module A — Labels (design first, then idempotent upsert)\n\n**Step 1 — Profile the project** (adjust the taxonomy, never copy blindly):\n\n- **Rating labels** → design a themed tier system for THIS project\n  (never copy an existing repo's set verbatim):\n  - Reference example — OpenClaw's official repo uses themed tiers with\n    emoji icons and a low→high color gradient (**EXAMPLE ONLY, do not copy**):\n    `rating: ? unranked krab` → `rating: ? silver shellfish` →\n    `rating: ? gold shrimp` → `rating: ? challenger crab` →\n    `rating: ? platinum hermit` → `rating: ? diamond lobster`\n  - International project → universal grades also work\n    (`grade: S\u002FA\u002FB\u002FC\u002FD` or `★`–`★★★★★`)\n  - Always redesign: pick a theme that fits the project (animals, gems,\n    ranks, stars…) and the audience's language. Do not reuse any existing\n    repo's rating labels as-is.\n- **Teams**: if the repo has an explicit division of labor\n  (CODEOWNERS, CONTRIBUTING, a team list in docs) → add one `team: *` label\n  per group (e.g. `team: frontend`, `team: algorithm`). No team list → skip.\n- **Project type** (library \u002F app \u002F coursework \u002F org-infra) → decide which\n  dimensions below are needed (`dependencies`, `security`, `docs`, …).\n- **Language**: write every label name and description in the language chosen\n  in Preflight step 5 (default English; local project → its primary language).\n  Never assume — translate every label name and description into the chosen\n  language (emoji glyphs stay as-is).\n  - **Exception — bot labels**: `r:*` \u002F `clawsweeper:*` \u002F `triage:*` \u002F\n    `close:*` names are matched literally by automation code (almost always\n    English). Keep those **names** in the bot's language — a translated name\n    breaks the bot. Only their `description` may use the user's language.\n\n**Step 2 — Compose categories.** Baseline lives in `templates\u002Flabels.json`\n(plain names, no emoji); extend or trim per the profile in Step 1.\n\n**Emoji policy — rating tiers are the ONLY mandatory-emoji labels.** Every\n`rating:*` \u002F `issue-rating:*` tier MUST carry an emoji with a clear low→high\ngradient (e.g. `rating: ? diamond lobster`). All other labels: emoji is the\nagent's call — add icons where they aid scanning, omit them where they\nclutter. **Consistency rule: within one dimension, either ALL labels carry\nan emoji or NONE do** — never a mixed half-emoji dimension (e.g. don't ship\n`? bug` next to a plain `enhancement`).\n\n**Every dimension is opt-in except Type.** Add a dimension only if the repo\nactually needs it; skip it otherwise. The menu below mirrors OpenClaw's\nofficial label taxonomy (the richest open reference) — cover every dimension\nthat applies, but never force one the repo doesn't use.\n\n**Priority uses `P0`–`P3`** (OpenClaw's convention — `P0` = emergency).\nExamples in the tables below show the optional emoji style — apply them\nall or none per dimension (baseline ships plain `P0`–`P3`):\n\n| Label | Meaning | Color |\n|---|---|---|\n| `? P0` | Emergency: data loss, security bypass, crash loop, unusable core | `b60205` |\n| `? P1` | High: blocks planned work, needs attention soon | `d93f0b` |\n| `? P2` | Medium: normal priority | `fbca04` |\n| `? P3` | Low: nice to have | `1a7f37` |\n\n**Dimension menu** (write each label in the user's chosen language):\n\n| Dimension | Labels (examples) | Add when |\n|---|---|---|\n| Type (always) | `? bug` `✨ enhancement` `? documentation` `❓ question` `? help wanted` `? good first issue` | always |\n| Priority | `? P0` `? P1` `? P2` `? P3` | recommended |\n| Status | `? in progress` `? blocked` `✅ ready to merge` `? merged` `? wontfix` | recommended |\n| Impact | `impact: security` `impact: data-loss` `impact: availability` … | recommended; required for security-sensitive repos |\n| Rating (PR quality) | `rating: ? diamond lobster` … themed tiers | PR-quality gate exists |\n| Issue rating | `issue-rating: ? diamond lobster` … | issue-quality gate exists (may fold into Rating) |\n| Merge risk | `merge-risk: ? security-boundary` `merge-risk: ? availability` … | maintainer review process exists |\n| Size | `size: XS` `size: S` `size: M` `size: L` `size: XL` | large repo \u002F team estimation |\n| Area \u002F module | `area: core` `area: api` `area: cli` … | multi-module project |\n| Bug detail | `bug: behavior` `bug: crash` | crash-prone \u002F many bug reports |\n| Governance \u002F auto-close rules | `r: spam` `r: support` `r: no-ci-pr` … `clawsweeper:*` `triage:*` | automation bot enforces close\u002Flock\u002Freview rules |\n| Close reason | `close: duplicate` `close: superseded` `close: invalid` … | close-automation bot exists |\n| Triage | `triage: bug` `triage: blocked` `triage: needs-review` … | triage workflow exists |\n| Proof | `proof: ? video` `proof: ? screenshot` | reproduction evidence required |\n| Dependencies | `? dependencies` | dependabot \u002F dependency PRs |\n| Security | `? security` | security-sensitive repo |\n| Regression | `↩️ regression` | stable project (was-working-now-fails) |\n| Stale | `?️ stale` `? no-stale` | stale automation exists |\n| Team | `team: \u003Cgroup>` | explicit division of labor |\n| Duplicate \u002F invalid | `? duplicate` `? invalid` | active public repo with many issues |\n| Channel | `channel: discord` `channel: telegram` … | multi-channel product (OpenClaw-style) |\n| App \u002F platform | `app: ios` `app: android` `app: web-ui` … | multi-platform app |\n| Extensions \u002F plugins | `extensions: \u003Cname>` `plugin: \u003Cname>` | plugin\u002Fextension ecosystem |\n\n**Governance rules (`r:` \u002F bot labels) — gated by Preflight step 6.** Only\nconsider this dimension if the user answered \"yes\" to automation bots \u002F AI\nwriters; skip it entirely otherwise. Auto-close and bot-state labels are\n**signal labels, not categories** — a bot (or Actions workflow) reads them and\nacts (auto-close, auto-lock, auto-fix, auto-merge). They are useless without\nthe matching automation, so **skip them unless a governance bot actually runs**\non the repo. If one does, add only the `r:*` rules matching the project's real\noff-topic \u002F reject criteria (e.g. `r: spam`, `r: support`, `r: no-ci-pr`) plus\nthe bot's own state labels (`clawsweeper:*`, `triage:*`, `close:*`). Never copy\nOpenClaw's set verbatim — its rules encode OpenClaw's specific product\nboundaries.\n\n**Impact dimension** — the security \"blast radius\" judgement (generalized\nfrom OpenClaw; trim to the repo's actual failure modes):\n\n| Label | Meaning |\n|---|---|\n| `impact: security` | security boundary, credentials, authz, sandbox, sensitive data |\n| `impact: data-loss` | loses\u002Fcorrupts\u002Fdrops user, session, or config data |\n| `impact: availability` | crash, hang, restart loop, or process outage |\n| `impact: auth-provider` | auth \u002F routing \u002F model choice \u002F secret resolution breaks |\n| `impact: session-state` | session \u002F memory \u002F state drifts or corrupts (stateful systems) |\n| `impact: message-loss` | messages\u002Fevents lost, duplicated, or misrouted (messaging systems) |\n| `impact: ux-blocker` | user blocked with no terminal\u002Flogs\u002Fsupport (GUI products) |\n| `impact: ux-friction` | confusing flow \u002F support burden (GUI products) |\n| `impact: other` | meaningful impact outside the owned taxonomy |\n\n**Step 3 — Color rules (mandatory):**\n\n- **Diverse palette**: colors must be rich and varied — the whole label set\n  should look like a palette, not a monochrome block. Even within one\n  category, spread the hues (e.g. priority labels: red \u002F orange \u002F yellow \u002F\n  green, or four clearly different hues).\n- **Semantic hints (not hard mappings)**: `ready to merge` \u002F `merged` \u002F done\n  → greens (never gray or red); `wontfix` → gray; `in progress` → blue.\n  Everything else: pick colors that look good together and match the label's\n  meaning loosely — but prefer variety over strict one-meaning-one-color.\n- **Emoji policy**: rating tiers are emoji-**mandatory** — every\n  `rating:*` \u002F `issue-rating:*` label needs a clear low→high emoji gradient\n  (e.g. `rating: ? diamond lobster`). Everywhere else, emoji is the agent's\n  call: use icons where they aid scanning, omit them where they clutter.\n  **Consistency: within one dimension, all labels carry an emoji or none\n  do** — never a mixed half-emoji dimension. If used, the emoji must match\n  the label's meaning, never decorative-only.\n- **Rating labels need docs**: when rating labels are added, also add\n  `LABELS.md` (Step 4) describing each label's meaning and the explicit\n  low→high order, so the ranking is unambiguous.\n- Neighboring labels must be distinguishable. Forbidden: all-one-color,\n  adjacent duplicates, or colors that contradict the label content.\n\n**Step 4 — Rating-label docs (only if rating labels exist).** Generate\n`LABELS.md` from `templates\u002FLABELS.md` (or extend an existing docs file):\nlist every rating label with its meaning and the explicit low→high order,\nplus the rest of the taxonomy. Commit and push it together with the labels.\n\n**Step 5 — Idempotent upsert.** GitHub has **no** `PUT \u002Flabels\u002F{name}`\nendpoint. Upsert = check existence (`GET \u002Flabels\u002F{name}`), then\n`POST \u002Flabels` (create) or `PATCH \u002Flabels\u002F{name}` (update). Works for both\nmap-form and array-form `labels.json`:\n\n```bash\nR=\"repos\u002FOWNER\u002FREPO\"\njq -c 'if type == \"array\" then .[] else to_entries[] | {name: .key} + .value end' templates\u002Flabels.json | while read -r l; do\n  name=$(echo \"$l\" | jq -r .name); color=$(echo \"$l\" | jq -r .color); desc=$(echo \"$l\" | jq -r .description)\n  enc=$(python3 -c \"import urllib.parse,sys;print(urllib.parse.quote(sys.argv[1]))\" \"$name\")\n  if gh api \"$R\u002Flabels\u002F$enc\" >\u002Fdev\u002Fnull 2>&1; then\n    gh api -X PATCH \"$R\u002Flabels\u002F$enc\" -f name=\"$name\" -f color=\"$color\" -f description=\"$desc\" --silent && echo \"label updated: $name\"\n  else\n    gh api -X POST \"$R\u002Flabels\" -f name=\"$name\" -f color=\"$color\" -f description=\"$desc\" --silent && echo \"label created: $name\"\n  fi\ndone\n```\n\n- URL-encode label names (spaces, slashes).\n- To reconcile drift (deleted manual labels), show the diff and ask before removing labels that are already in use.\n\n### Module B — Issue forms + config\n\nCreate `.github\u002FISSUE_TEMPLATE\u002F` with `config.yml` plus one YAML form per\ntemplate (bug \u002F feature \u002F question). Push via a commit:\n\n- **Replace placeholders** in `config.yml` (`OWNER\u002FREPO` in the\n  Discussions \u002F Security contact URLs) — see Template placeholders.\n- Write the forms in the user-chosen language (Preflight step 5): translate\n  form names, labels, descriptions, and placeholder text; `title:` prefix\n  and `labels:` values stay as-is (they must match the label taxonomy).\n\n```bash\nmkdir -p .github\u002FISSUE_TEMPLATE\ncp templates\u002Fissue-form-*.yml templates\u002Fconfig.yml .github\u002FISSUE_TEMPLATE\u002F\ngit add .github\u002FISSUE_TEMPLATE && git commit -m \"chore: add issue forms\" && git push\n```\n\n- If templates already exist, diff them; only overwrite identical or clearly\n  stale files (ask first if the user may have customized them).\n- If there is no git clone, clone first (`gh repo clone OWNER\u002FREPO`), edit, push.\n\n### Module C — PR template\n\n```bash\nmkdir -p .github\ncp templates\u002FPR_TEMPLATE.md .github\u002FPULL_REQUEST_TEMPLATE.md\ngit add .github\u002FPULL_REQUEST_TEMPLATE.md && git commit -m \"chore: add PR template\" && git push\n```\n\n- Write the template in the user-chosen language (Preflight step 5).\n  The PR template has no placeholders to replace.\n\n### Module D — CI workflow\n\nPick the workflow from the framework detection (templates\u002Fci-*.yml —\nthey trigger on `$default-branch`, so they work for any default branch\nname). Write to `.github\u002Fworkflows\u002Fci.yml`, commit, push. Keep existing\nworkflows; only add `ci.yml` if none exists.\n\n- Node projects: `ci-node.yml` installs dependencies lockfile-aware\n  (`npm ci` \u002F `pnpm install --frozen-lockfile` \u002F `yarn install\n  --frozen-lockfile`, with plain `npm install` as fallback) — no manual\n  adjustment needed for pnpm \u002F yarn repos.\n\n- Note: pushing workflow files requires a token with the `workflow` scope; if\n  the push is rejected with 403, tell the user their token lacks `workflow`.\n\n### Module E — Branch rules\n\nPrefer **rulesets** (modern) over legacy branch protection:\n\n```bash\n# list existing\ngh api repos\u002FOWNER\u002FREPO\u002Frulesets -q '.[].name'\n# create (example: protect default branch)\ngh api -X POST repos\u002FOWNER\u002FREPO\u002Frulesets --input - \u003C\u003C'EOF'\n{\n  \"name\": \"protect-default-branch\",\n  \"target\": \"branch\",\n  \"enforcement\": \"active\",\n  \"conditions\": {\n    \"ref_name\": {\"include\": [\"refs\u002Fheads\u002FDEFAULT_BRANCH\"], \"exclude\": []}\n  },\n  \"rules\": [\n    {\"type\": \"pull_request\", \"parameters\": {\"required_approving_review_count\": 1, \"dismiss_stale_reviews_on_push\": true, \"require_code_owner_review\": false, \"require_last_push_approval\": true, \"required_review_thread_resolution\": true}},\n    {\"type\": \"required_linear_history\"},\n    {\"type\": \"deletion\"},\n    {\"type\": \"non_fast_forward\"},\n    {\"type\": \"required_signatures\"}\n  ]\n}\nEOF\n```\n\n- Idempotency: if a ruleset with the same name exists, update it with\n  `PUT repos\u002FOWNER\u002FREPO\u002Frulesets\u002F{id}` — **full replace**, include the complete\n  body (name, enforcement, conditions, rules, bypass_actors). There is no PATCH\n  for rulesets (PATCH returns 404).\n- Optional admin bypass: add `\"bypass_actors\": [{\"actor_id\": 5,\n  \"actor_type\": \"RepositoryRole\", \"bypass_mode\": \"always\"}]` (id 5 = admin)\n  so maintainers can push directly to the protected branch; non-admins still\n  go through pull requests.\n- `pull_request` parameters are **all required** in current API versions:\n  `required_approving_review_count`, `dismiss_stale_reviews_on_push`,\n  `require_code_owner_review`, `require_last_push_approval`,\n  `required_review_thread_resolution`. Omitting any → HTTP 422.\n- `target: \"branch\"` + `ref_name.include: refs\u002Fheads\u002F\u003Cdefault>`; also offer\n  `\"tag\"` rules if tags matter.\n- Org repos: optionally offer org-level rulesets (`\u002Forgs\u002F{org}\u002Frulesets`).\n\n### Module F — Docs\n\nREADME (ask about languages FIRST):\n\n- Ask the user: which languages should the README support? (suggest the\n  project's primary language + English for international projects)\n- If a README already exists, ask whether to adapt it into more languages —\n  never add languages without asking.\n- Language switcher convention (pattern from `programmingHLS\u002Fccmm`):\n  - Default file stays `README.md` (usually English).\n  - Extra languages: `README.\u003Clang>.md` (e.g. `README.zh.md`, `README.ja.md`).\n  - Top of every file, a switcher line — current language as plain text,\n    others as relative links:\n    - `README.md`:       `\u003C English | 简体中文 >`  (简体中文 links to `README.zh.md`)\n    - `README.zh.md`:    `\u003C English | 简体中文 >`  (English links to `README.md`)\n  - Keep structure, badges, and anchors parallel across language files.\n- `README.md`: if missing or bare, generate one from `templates\u002FREADME.md`\n  (badges, install, usage, modules table). Keep the user's existing content if\n  it is already substantive — only append a badges block. **Replace\n  placeholders** (badge URLs, clone URL, owner credit) per Template\n  placeholders.\n- `CONTRIBUTING.md`, `SECURITY.md`, `CODE_OF_CONDUCT.md`: copy from\n  templates if missing (write `CONTRIBUTING.md` in the user-chosen language\n  from Preflight step 5; **replace `OWNER\u002FREPO`** in `SECURITY.md`'s\n  advisory link per Template placeholders).\n- `VISION.md`: optional direction doc (modeled on OpenClaw's VISION.md) —\n  generate a short vision from `templates\u002FVISION.md` (origin, guiding\n  principles, current state, direction, contribution rules) if the user\n  wants one (**replace `PROJECT_NAME`** per Template placeholders).\n- `THIRD_PARTY_NOTICES.md`: add when the project adapts third-party content\n  (licenses, fonts, code of conduct) — list each source and its license.\n- `docs\u002FARCHITECTURE.md`: for non-trivial projects, generate a short\n  architecture doc (structure, flow, constraints) from the audit.\n- `LICENSE`: ask the user which license (default MIT) before creating.\n- `CHANGELOG.md`: create from `templates\u002FCHANGELOG.md` (Keep a Changelog\n  format) if missing; log notable changes per release (**replace\n  `YYYY-MM-DD`** in the placeholder date line per Template placeholders).\n\n### Module G — AI assistant guides (CLAUDE.md \u002F AGENTS.md)\n\n- Add a `CLAUDE.md` (guidance for Claude Code) and an `AGENTS.md` (guidance\n  for any AI coding agent) when missing — see `templates\u002FCLAUDE.md` and\n  `templates\u002FAGENTS.md` (**replace `OWNER\u002FREPO`** and the i18n placeholder\n  per Template placeholders).\n- If they already exist, diff and fill gaps rather than overwrite.\n- Typical content, derived from the repo audit (Modules A–F):\n  - Project: one-paragraph summary, status, stack.\n  - Commands: build \u002F test \u002F lint \u002F run (from CI detection + package scripts).\n  - Conventions: commit style (see CONTRIBUTING), label taxonomy, i18n\n    requirements, secrets policy (never hardcode keys), file map.\n  - Caveats: known risks, areas to be careful with.\n- CLAUDE.md vs AGENTS.md: CLAUDE.md is Claude-specific; AGENTS.md is\n  agent-agnostic (works for Cursor\u002FCopilot\u002FOpenClaw too). Keep AGENTS.md free\n  of Claude-only references.\n\n## Verification\n\n```bash\ngh label list --repo OWNER\u002FREPO --limit 200 | wc -l\ngh api repos\u002FOWNER\u002FREPO\u002Fcontents\u002F.github\u002FISSUE_TEMPLATE -q '.[].name' 2>\u002Fdev\u002Fnull\ngh api repos\u002FOWNER\u002FREPO\u002Fcontents\u002F.github\u002FPULL_REQUEST_TEMPLATE.md -q .name 2>\u002Fdev\u002Fnull\ngh api repos\u002FOWNER\u002FREPO\u002Fcontents\u002F.github\u002Fworkflows\u002Fci.yml -q .name 2>\u002Fdev\u002Fnull\ngh api repos\u002FOWNER\u002FREPO\u002Frulesets -q '.[] | {name:.name, enforcement:.enforcement}'\n```\n\nReport a final table: `module | status (applied\u002Fskipped\u002Ffailed) | note`.\n\n## Template placeholders (replace on copy)\n\nTemplates stay generic — `OWNER\u002FREPO`, `OWNER_USERNAME`, `PROJECT_NAME`,\n`YYYY-MM-DD` are placeholders the agent fills in when copying a template\ninto the target repo. **Unreplaced placeholders ship broken links** (badges,\nclone URL, discussions, security advisory, CODEOWNERS handle) into the\nuser's repo.\n\n| Placeholder | Replace with |\n|---|---|\n| `OWNER` | target repo owner login (user or org) |\n| `REPO` | target repo name |\n| `OWNER_USERNAME` | owner's default reviewer \u002F team handle |\n| `PROJECT_NAME` | project display name |\n| `YYYY-MM-DD` | current date |\n\nResolve the values once up front, then substitute in every copied file\n(`config.yml`, `README*.md`, `SECURITY.md`, `CODEOWNERS`, `AGENTS.md` \u002F\n`CLAUDE.md`, `VISION.md`, …):\n\n```bash\nO=OWNER R=REPO N=PROJECT_NAME D=$(date +%F)\nsed -i \"s|OWNER_USERNAME|$O|g; s|OWNER\u002FREPO|$O\u002F$R|g; s|PROJECT_NAME|$N|g; s|YYYY-MM-DD|$D|g\" \\\n  .github\u002FISSUE_TEMPLATE\u002Fconfig.yml README.md SECURITY.md .github\u002FCODEOWNERS AGENTS.md\n```\n\n- Replace `OWNER_USERNAME` before `OWNER\u002FREPO` — the former contains the\n  `OWNER` prefix, so order matters with naive `sed`.\n- Only `config.yml`, `README*.md`, `SECURITY.md`, `CODEOWNERS`, `AGENTS.md` \u002F\n  `CLAUDE.md`, `VISION.md`, `CHANGELOG.md` carry placeholders; the issue\n  forms, PR template, CI workflows, and CoC are placeholder-free.\n- CI templates need no substitution, but **translate** their human-facing\n  text if the user chose a non-English language.\n\n## Rules of thumb\n\n- **Idempotent**: every module can run twice with the same result.\n- **Never clobber user content**: diff first, ask before overwriting customized files.\n- **Auth first**: no token, no action — tell the user how to log in, never guess.\n- **Dry-run before destructive ops**: rulesets, branch rules, label deletion, visibility changes.\n- **Confirm scope**: org\u002Fprivate repos and anything the user didn't explicitly name.\n\n## Templates\n\nAll templates live in `templates\u002F`:\n`labels.json`, `LABELS.md`, `config.yml`, `issue-form-bug.yml`,\n`issue-form-feature.yml`, `issue-form-question.yml`, `PR_TEMPLATE.md`,\n`ci-node.yml`, `ci-python.yml`, `ci-go.yml`, `ci-rust.yml`, `CODEOWNERS`,\n`CONTRIBUTING.md`, `SECURITY.md`, `CODE_OF_CONDUCT.md`, `CLAUDE.md`,\n`AGENTS.md`, `VISION.md`, `CHANGELOG.md`, `templates\u002FREADME.md`,\n`templates\u002FREADME.zh.md`.\n","# GitHub Repo Standardizer\n\nDetect a repository's current state, then polish its surface: issue forms,\nPR template, label taxonomy, CI, CODEOWNERS, rulesets, docs. Works on\nrepo metadata and config files only — code logic is never touched.\n**Idempotent** — safe to re-run; fills gaps and reconciles drift without\nduplicating or clobbering.\n\n## When to use\n\n- User says \"standardize \u002F tidy up \u002F professionalize this repo\"\n- A new repo was just created and needs templates, labels, CI, and rules from day one\n- A repo looks bare: no templates, no labels, no CI, no branch protection\n\n## Preflight (mandatory, in order)\n\n> **Requires**: `gh` CLI (authenticated), `git`, `jq`, `python3` — verify\n> they exist before starting (`which gh git jq python3`).\n\n### 1. Authenticate — check gh login first\n\n```bash\ngh auth status 2>\u002Fdev\u002Fnull || echo \"NOT_LOGGED_IN\"\n```\n\n- **Logged in** → continue; print `gh api user -q .login` so the user knows which account will act.\n- **Not logged in** → STOP. Tell the user (do not guess):\n  1. Run `gh auth login` (web\u002Fdevice flow), **or**\n  2. Export a token: `export GH_TOKEN=ghp_xxx` — needs `repo`, `workflow` (for CI files) and, for org repos, `admin:org` (or `admin:repo_hook` \u002F org membership admin) scopes.\n  - Never paste tokens into chat, logs, or files. If the user pastes a token in chat, advise them to revoke it and re-issue.\n  - If `gh auth login` is impossible in this environment (headless), suggest `gh auth login --with-token` reading from a file the user created.\n\nVerify the acting account can write to the target:\n\n```bash\n# user repos: no extra check needed beyond token scopes\n# org repos: must be a member\u002Fadmin of the org\ngh api \"orgs\u002FORG\u002Fmemberships\u002F$(gh api user -q .login)\" -q .role 2>\u002Fdev\u002Fnull || echo \"NO_ORG_ACCESS\"\n```\n\n- `admin`\u002F`member` → OK. `404` → stop and ask the user to add the account to the org first.\n\n### 2. Detect repository type\n\n```bash\ngh repo view OWNER\u002FREPO --json name,owner,visibility,defaultBranchRef,isArchived,isFork \\\n  -q '{name:.name, ownerType:.owner.type, visibility:.visibility, defaultBranch:.defaultBranchRef.name, archived:.isArchived, fork:.isFork}'\n```\n\n| Field | Meaning | Consequence |\n|---|---|---|\n| `ownerType` | `User` = personal, `Organization` = org | Org repos can also use org-level rulesets; both support repo-level rulesets |\n| `visibility` | `PUBLIC` \u002F `PRIVATE` \u002F `INTERNAL` | Private: skip public-facing docs pressure, keep CI secrets minimal; public: README badges + CONTRIBUTING\u002FSECURITY matter |\n| `archived` \u002F `fork` | Read-only \u002F fork | **Skip write modules**; report why |\n\nIf the repo was not explicitly named by the user, confirm before touching an\norg or private repository.\n\n### 3. Audit current state\n\n```bash\ngh label list --repo OWNER\u002FREPO --limit 200\ngh api repos\u002FOWNER\u002FREPO\u002Fcontents\u002F.github -q '.[].path' 2>\u002Fdev\u002Fnull || echo \"no .github dir\"\ngh api repos\u002FOWNER\u002FREPO\u002Fcontents\u002F.github\u002Fworkflows -q '.[].name' 2>\u002Fdev\u002Fnull || echo \"no workflows\"\ngh api repos\u002FOWNER\u002FREPO\u002Frulesets -q '.[] | {name:.name, enforcement:.enforcement}' 2>\u002Fdev\u002Fnull || echo \"no rulesets\"\ngh api repos\u002FOWNER\u002FREPO\u002Fbranches -q '.[].name' 2>\u002Fdev\u002Fnull\nfor f in README.md CONTRIBUTING.md SECURITY.md LICENSE .gitignore; do\n  gh api \"repos\u002FOWNER\u002FREPO\u002Fcontents\u002F$f\" -q .name 2>\u002Fdev\u002Fnull || echo \"missing: $f\"\ndone\n```\n\n### 4. Detect test framework (for CI module)\n\nCheck for these signals (first match wins):\n\n```bash\ngh api repos\u002FOWNER\u002FREPO\u002Fcontents\u002Fpackage.json -q .name 2>\u002Fdev\u002Fnull   # node → templates\u002Fci-node.yml\ngh api repos\u002FOWNER\u002FREPO\u002Fcontents\u002Fpyproject.toml -q .name 2>\u002Fdev\u002Fnull # python → templates\u002Fci-python.yml\ngh api repos\u002FOWNER\u002FREPO\u002Fcontents\u002Fgo.mod -q .name 2>\u002Fdev\u002Fnull         # go → templates\u002Fci-go.yml\ngh api repos\u002FOWNER\u002FREPO\u002Fcontents\u002FCargo.toml -q .name 2>\u002Fdev\u002Fnull     # rust → templates\u002Fci-rust.yml\n```\n\nNo signal → propose the generic CI (or ask the user whether CI is wanted at all).\n\n### 5. Ask about language (before planning)\n\n- Ask the user which language `CONTRIBUTING.md` and the PR template should be\n  written in (default: English, or the project's primary language for local\n  projects). Translate the templates accordingly when generating — never\n  assume a language.\n- (README languages are asked separately in Module F.)\n\n### 6. Ask about automation (decides the Governance labels)\n\nAsk the user whether the repo has any **automation bots or AI writers**\nrunning on it — e.g. dependabot, a Stale bot, ClawSweeper, or an AI coding\nagent that auto-files PRs \u002F auto-fixes issues.\n\n- **Why ask**: `r:*` \u002F `clawsweeper:*` \u002F `triage:*` \u002F `close:*` labels are\n  **signal labels, not categories** — a bot reads them and acts (auto-close,\n  auto-lock, auto-fix, auto-merge). Without running automation those labels\n  are dead weight, so the answer decides whether the Governance dimension is\n  added at all (Module A, Step 2).\n- **Yes** → plan the `Governance \u002F auto-close rules` dimension (add only the\n  `r:*` rules matching the project's real reject criteria).\n- **No** → skip that dimension entirely — never add `r:*` \u002F bot labels to a\n  repo with no automation.\n\n## Workflow\n\n1. **Preflight** (above). If auth or access fails, stop with a clear message.\n2. **Dry-run plan** — show the user a concise table of what will be created\u002Fupdated\u002Fskipped. Get confirmation for: rulesets, branch deletion\u002Fprotection changes, org-level changes, and anything destructive.\n3. **Apply modules** (each idempotent; run in this order).\n4. **Verify** — re-query and print an `applied \u002F skipped \u002F failed` checklist.\n\n### Module A — Labels (design first, then idempotent upsert)\n\n**Step 1 — Profile the project** (adjust the taxonomy, never copy blindly):\n\n- **Rating labels** → design a themed tier system for THIS project\n  (never copy an existing repo's set verbatim):\n  - Reference example — OpenClaw's official repo uses themed tiers with\n    emoji icons and a low→high color gradient (**EXAMPLE ONLY, do not copy**):\n    `rating: ? unranked krab` → `rating: ? silver shellfish` →\n    `rating: ? gold shrimp` → `rating: ? challenger crab` →\n    `rating: ? platinum hermit` → `rating: ? diamond lobster`\n  - International project → universal grades also work\n    (`grade: S\u002FA\u002FB\u002FC\u002FD` or `★`–`★★★★★`)\n  - Always redesign: pick a theme that fits the project (animals, gems,\n    ranks, stars…) and the audience's language. Do not reuse any existing\n    repo's rating labels as-is.\n- **Teams**: if the repo has an explicit division of labor\n  (CODEOWNERS, CONTRIBUTING, a team list in docs) → add one `team: *` label\n  per group (e.g. `team: frontend`, `team: algorithm`). No team list → skip.\n- **Project type** (library \u002F app \u002F coursework \u002F org-infra) → decide which\n  dimensions below are needed (`dependencies`, `security`, `docs`, …).\n- **Language**: write every label name and description in the language chosen\n  in Preflight step 5 (default English; local project → its primary language).\n  Never assume — translate every label name and description into the chosen\n  language (emoji glyphs stay as-is).\n  - **Exception — bot labels**: `r:*` \u002F `clawsweeper:*` \u002F `triage:*` \u002F\n    `close:*` names are matched literally by automation code (almost always\n    English). Keep those **names** in the bot's language — a translated name\n    breaks the bot. Only their `description` may use the user's language.\n\n**Step 2 — Compose categories.** Baseline lives in `templates\u002Flabels.json`\n(plain names, no emoji); extend or trim per the profile in Step 1.\n\n**Emoji policy — rating tiers are the ONLY mandatory-emoji labels.** Every\n`rating:*` \u002F `issue-rating:*` tier MUST carry an emoji with a clear low→high\ngradient (e.g. `rating: ? diamond lobster`). All other labels: emoji is the\nagent's call — add icons where they aid scanning, omit them where they\nclutter. **Consistency rule: within one dimension, either ALL labels carry\nan emoji or NONE do** — never a mixed half-emoji dimension (e.g. don't ship\n`? bug` next to a plain `enhancement`).\n\n**Every dimension is opt-in except Type.** Add a dimension only if the repo\nactually needs it; skip it otherwise. The menu below mirrors OpenClaw's\nofficial label taxonomy (the richest open reference) — cover every dimension\nthat applies, but never force one the repo doesn't use.\n\n**Priority uses `P0`–`P3`** (OpenClaw's convention — `P0` = emergency).\nExamples in the tables below show the optional emoji style — apply them\nall or none per dimension (baseline ships plain `P0`–`P3`):\n\n| Label | Meaning | Color |\n|---|---|---|\n| `? P0` | Emergency: data loss, security bypass, crash loop, unusable core | `b60205` |\n| `? P1` | High: blocks planned work, needs attention soon | `d93f0b` |\n| `? P2` | Medium: normal priority | `fbca04` |\n| `? P3` | Low: nice to have | `1a7f37` |\n\n**Dimension menu** (write each label in the user's chosen language):\n\n| Dimension | Labels (examples) | Add when |\n|---|---|---|\n| Type (always) | `? bug` `✨ enhancement` `? documentation` `❓ question` `? help wanted` `? good first issue` | always |\n| Priority | `? P0` `? P1` `? P2` `? P3` | recommended |\n| Status | `? in progress` `? blocked` `✅ ready to merge` `? merged` `? wontfix` | recommended |\n| Impact | `impact: security` `impact: data-loss` `impact: availability` … | recommended; required for security-sensitive repos |\n| Rating (PR quality) | `rating: ? diamond lobster` … themed tiers | PR-quality gate exists |\n| Issue rating | `issue-rating: ? diamond lobster` … | issue-quality gate exists (may fold into Rating) |\n| Merge risk | `merge-risk: ? security-boundary` `merge-risk: ? availability` … | maintainer review process exists |\n| Size | `size: XS` `size: S` `size: M` `size: L` `size: XL` | large repo \u002F team estimation |\n| Area \u002F module | `area: core` `area: api` `area: cli` … | multi-module project |\n| Bug detail | `bug: behavior` `bug: crash` | crash-prone \u002F many bug reports |\n| Governance \u002F auto-close rules | `r: spam` `r: support` `r: no-ci-pr` … `clawsweeper:*` `triage:*` | automation bot enforces close\u002Flock\u002Freview rules |\n| Close reason | `close: duplicate` `close: superseded` `close: invalid` … | close-automation bot exists |\n| Triage | `triage: bug` `triage: blocked` `triage: needs-review` … | triage workflow exists |\n| Proof | `proof: ? video` `proof: ? screenshot` | reproduction evidence required |\n| Dependencies | `? dependencies` | dependabot \u002F dependency PRs |\n| Security | `? security` | security-sensitive repo |\n| Regression | `↩️ regression` | stable project (was-working-now-fails) |\n| Stale | `?️ stale` `? no-stale` | stale automation exists |\n| Team | `team: \u003Cgroup>` | explicit division of labor |\n| Duplicate \u002F invalid | `? duplicate` `? invalid` | active public repo with many issues |\n| Channel | `channel: discord` `channel: telegram` … | multi-channel product (OpenClaw-style) |\n| App \u002F platform | `app: ios` `app: android` `app: web-ui` … | multi-platform app |\n| Extensions \u002F plugins | `extensions: \u003Cname>` `plugin: \u003Cname>` | plugin\u002Fextension ecosystem |\n\n**Governance rules (`r:` \u002F bot labels) — gated by Preflight step 6.** Only\nconsider this dimension if the user answered \"yes\" to automation bots \u002F AI\nwriters; skip it entirely otherwise. Auto-close and bot-state labels are\n**signal labels, not categories** — a bot (or Actions workflow) reads them and\nacts (auto-close, auto-lock, auto-fix, auto-merge). They are useless without\nthe matching automation, so **skip them unless a governance bot actually runs**\non the repo. If one does, add only the `r:*` rules matching the project's real\noff-topic \u002F reject criteria (e.g. `r: spam`, `r: support`, `r: no-ci-pr`) plus\nthe bot's own state labels (`clawsweeper:*`, `triage:*`, `close:*`). Never copy\nOpenClaw's set verbatim — its rules encode OpenClaw's specific product\nboundaries.\n\n**Impact dimension** — the security \"blast radius\" judgement (generalized\nfrom OpenClaw; trim to the repo's actual failure modes):\n\n| Label | Meaning |\n|---|---|\n| `impact: security` | security boundary, credentials, authz, sandbox, sensitive data |\n| `impact: data-loss` | loses\u002Fcorrupts\u002Fdrops user, session, or config data |\n| `impact: availability` | crash, hang, restart loop, or process outage |\n| `impact: auth-provider` | auth \u002F routing \u002F model choice \u002F secret resolution breaks |\n| `impact: session-state` | session \u002F memory \u002F state drifts or corrupts (stateful systems) |\n| `impact: message-loss` | messages\u002Fevents lost, duplicated, or misrouted (messaging systems) |\n| `impact: ux-blocker` | user blocked with no terminal\u002Flogs\u002Fsupport (GUI products) |\n| `impact: ux-friction` | confusing flow \u002F support burden (GUI products) |\n| `impact: other` | meaningful impact outside the owned taxonomy |\n\n**Step 3 — Color rules (mandatory):**\n\n- **Diverse palette**: colors must be rich and varied — the whole label set\n  should look like a palette, not a monochrome block. Even within one\n  category, spread the hues (e.g. priority labels: red \u002F orange \u002F yellow \u002F\n  green, or four clearly different hues).\n- **Semantic hints (not hard mappings)**: `ready to merge` \u002F `merged` \u002F done\n  → greens (never gray or red); `wontfix` → gray; `in progress` → blue.\n  Everything else: pick colors that look good together and match the label's\n  meaning loosely — but prefer variety over strict one-meaning-one-color.\n- **Emoji policy**: rating tiers are emoji-**mandatory** — every\n  `rating:*` \u002F `issue-rating:*` label needs a clear low→high emoji gradient\n  (e.g. `rating: ? diamond lobster`). Everywhere else, emoji is the agent's\n  call: use icons where they aid scanning, omit them where they clutter.\n  **Consistency: within one dimension, all labels carry an emoji or none\n  do** — never a mixed half-emoji dimension. If used, the emoji must match\n  the label's meaning, never decorative-only.\n- **Rating labels need docs**: when rating labels are added, also add\n  `LABELS.md` (Step 4) describing each label's meaning and the explicit\n  low→high order, so the ranking is unambiguous.\n- Neighboring labels must be distinguishable. Forbidden: all-one-color,\n  adjacent duplicates, or colors that contradict the label content.\n\n**Step 4 — Rating-label docs (only if rating labels exist).** Generate\n`LABELS.md` from `templates\u002FLABELS.md` (or extend an existing docs file):\nlist every rating label with its meaning and the explicit low→high order,\nplus the rest of the taxonomy. Commit and push it together with the labels.\n\n**Step 5 — Idempotent upsert.** GitHub has **no** `PUT \u002Flabels\u002F{name}`\nendpoint. Upsert = check existence (`GET \u002Flabels\u002F{name}`), then\n`POST \u002Flabels` (create) or `PATCH \u002Flabels\u002F{name}` (update). Works for both\nmap-form and array-form `labels.json`:\n\n```bash\nR=\"repos\u002FOWNER\u002FREPO\"\njq -c 'if type == \"array\" then .[] else to_entries[] | {name: .key} + .value end' templates\u002Flabels.json | while read -r l; do\n  name=$(echo \"$l\" | jq -r .name); color=$(echo \"$l\" | jq -r .color); desc=$(echo \"$l\" | jq -r .description)\n  enc=$(python3 -c \"import urllib.parse,sys;print(urllib.parse.quote(sys.argv[1]))\" \"$name\")\n  if gh api \"$R\u002Flabels\u002F$enc\" >\u002Fdev\u002Fnull 2>&1; then\n    gh api -X PATCH \"$R\u002Flabels\u002F$enc\" -f name=\"$name\" -f color=\"$color\" -f description=\"$desc\" --silent && echo \"label updated: $name\"\n  else\n    gh api -X POST \"$R\u002Flabels\" -f name=\"$name\" -f color=\"$color\" -f description=\"$desc\" --silent && echo \"label created: $name\"\n  fi\ndone\n```\n\n- URL-encode label names (spaces, slashes).\n- To reconcile drift (deleted manual labels), show the diff and ask before removing labels that are already in use.\n\n### Module B — Issue forms + config\n\nCreate `.github\u002FISSUE_TEMPLATE\u002F` with `config.yml` plus one YAML form per\ntemplate (bug \u002F feature \u002F question). Push via a commit:\n\n- **Replace placeholders** in `config.yml` (`OWNER\u002FREPO` in the\n  Discussions \u002F Security contact URLs) — see Template placeholders.\n- Write the forms in the user-chosen language (Preflight step 5): translate\n  form names, labels, descriptions, and placeholder text; `title:` prefix\n  and `labels:` values stay as-is (they must match the label taxonomy).\n\n```bash\nmkdir -p .github\u002FISSUE_TEMPLATE\ncp templates\u002Fissue-form-*.yml templates\u002Fconfig.yml .github\u002FISSUE_TEMPLATE\u002F\ngit add .github\u002FISSUE_TEMPLATE && git commit -m \"chore: add issue forms\" && git push\n```\n\n- If templates already exist, diff them; only overwrite identical or clearly\n  stale files (ask first if the user may have customized them).\n- If there is no git clone, clone first (`gh repo clone OWNER\u002FREPO`), edit, push.\n\n### Module C — PR template\n\n```bash\nmkdir -p .github\ncp templates\u002FPR_TEMPLATE.md .github\u002FPULL_REQUEST_TEMPLATE.md\ngit add .github\u002FPULL_REQUEST_TEMPLATE.md && git commit -m \"chore: add PR template\" && git push\n```\n\n- Write the template in the user-chosen language (Preflight step 5).\n  The PR template has no placeholders to replace.\n\n### Module D — CI workflow\n\nPick the workflow from the framework detection (templates\u002Fci-*.yml —\nthey trigger on `$default-branch`, so they work for any default branch\nname). Write to `.github\u002Fworkflows\u002Fci.yml`, commit, push. Keep existing\nworkflows; only add `ci.yml` if none exists.\n\n- Node projects: `ci-node.yml` installs dependencies lockfile-aware\n  (`npm ci` \u002F `pnpm install --frozen-lockfile` \u002F `yarn install\n  --frozen-lockfile`, with plain `npm install` as fallback) — no manual\n  adjustment needed for pnpm \u002F yarn repos.\n\n- Note: pushing workflow files requires a token with the `workflow` scope; if\n  the push is rejected with 403, tell the user their token lacks `workflow`.\n\n### Module E — Branch rules\n\nPrefer **rulesets** (modern) over legacy branch protection:\n\n```bash\n# list existing\ngh api repos\u002FOWNER\u002FREPO\u002Frulesets -q '.[].name'\n# create (example: protect default branch)\ngh api -X POST repos\u002FOWNER\u002FREPO\u002Frulesets --input - \u003C\u003C'EOF'\n{\n  \"name\": \"protect-default-branch\",\n  \"target\": \"branch\",\n  \"enforcement\": \"active\",\n  \"conditions\": {\n    \"ref_name\": {\"include\": [\"refs\u002Fheads\u002FDEFAULT_BRANCH\"], \"exclude\": []}\n  },\n  \"rules\": [\n    {\"type\": \"pull_request\", \"parameters\": {\"required_approving_review_count\": 1, \"dismiss_stale_reviews_on_push\": true, \"require_code_owner_review\": false, \"require_last_push_approval\": true, \"required_review_thread_resolution\": true}},\n    {\"type\": \"required_linear_history\"},\n    {\"type\": \"deletion\"},\n    {\"type\": \"non_fast_forward\"},\n    {\"type\": \"required_signatures\"}\n  ]\n}\nEOF\n```\n\n- Idempotency: if a ruleset with the same name exists, update it with\n  `PUT repos\u002FOWNER\u002FREPO\u002Frulesets\u002F{id}` — **full replace**, include the complete\n  body (name, enforcement, conditions, rules, bypass_actors). There is no PATCH\n  for rulesets (PATCH returns 404).\n- Optional admin bypass: add `\"bypass_actors\": [{\"actor_id\": 5,\n  \"actor_type\": \"RepositoryRole\", \"bypass_mode\": \"always\"}]` (id 5 = admin)\n  so maintainers can push directly to the protected branch; non-admins still\n  go through pull requests.\n- `pull_request` parameters are **all required** in current API versions:\n  `required_approving_review_count`, `dismiss_stale_reviews_on_push`,\n  `require_code_owner_review`, `require_last_push_approval`,\n  `required_review_thread_resolution`. Omitting any → HTTP 422.\n- `target: \"branch\"` + `ref_name.include: refs\u002Fheads\u002F\u003Cdefault>`; also offer\n  `\"tag\"` rules if tags matter.\n- Org repos: optionally offer org-level rulesets (`\u002Forgs\u002F{org}\u002Frulesets`).\n\n### Module F — Docs\n\nREADME (ask about languages FIRST):\n\n- Ask the user: which languages should the README support? (suggest the\n  project's primary language + English for international projects)\n- If a README already exists, ask whether to adapt it into more languages —\n  never add languages without asking.\n- Language switcher convention (pattern from `programmingHLS\u002Fccmm`):\n  - Default file stays `README.md` (usually English).\n  - Extra languages: `README.\u003Clang>.md` (e.g. `README.zh.md`, `README.ja.md`).\n  - Top of every file, a switcher line — current language as plain text,\n    others as relative links:\n    - `README.md`:       `\u003C English | 简体中文 >`  (简体中文 links to `README.zh.md`)\n    - `README.zh.md`:    `\u003C English | 简体中文 >`  (English links to `README.md`)\n  - Keep structure, badges, and anchors parallel across language files.\n- `README.md`: if missing or bare, generate one from `templates\u002FREADME.md`\n  (badges, install, usage, modules table). Keep the user's existing content if\n  it is already substantive — only append a badges block. **Replace\n  placeholders** (badge URLs, clone URL, owner credit) per Template\n  placeholders.\n- `CONTRIBUTING.md`, `SECURITY.md`, `CODE_OF_CONDUCT.md`: copy from\n  templates if missing (write `CONTRIBUTING.md` in the user-chosen language\n  from Preflight step 5; **replace `OWNER\u002FREPO`** in `SECURITY.md`'s\n  advisory link per Template placeholders).\n- `VISION.md`: optional direction doc (modeled on OpenClaw's VISION.md) —\n  generate a short vision from `templates\u002FVISION.md` (origin, guiding\n  principles, current state, direction, contribution rules) if the user\n  wants one (**replace `PROJECT_NAME`** per Template placeholders).\n- `THIRD_PARTY_NOTICES.md`: add when the project adapts third-party content\n  (licenses, fonts, code of conduct) — list each source and its license.\n- `docs\u002FARCHITECTURE.md`: for non-trivial projects, generate a short\n  architecture doc (structure, flow, constraints) from the audit.\n- `LICENSE`: ask the user which license (default MIT) before creating.\n- `CHANGELOG.md`: create from `templates\u002FCHANGELOG.md` (Keep a Changelog\n  format) if missing; log notable changes per release (**replace\n  `YYYY-MM-DD`** in the placeholder date line per Template placeholders).\n\n### Module G — AI assistant guides (CLAUDE.md \u002F AGENTS.md)\n\n- Add a `CLAUDE.md` (guidance for Claude Code) and an `AGENTS.md` (guidance\n  for any AI coding agent) when missing — see `templates\u002FCLAUDE.md` and\n  `templates\u002FAGENTS.md` (**replace `OWNER\u002FREPO`** and the i18n placeholder\n  per Template placeholders).\n- If they already exist, diff and fill gaps rather than overwrite.\n- Typical content, derived from the repo audit (Modules A–F):\n  - Project: one-paragraph summary, status, stack.\n  - Commands: build \u002F test \u002F lint \u002F run (from CI detection + package scripts).\n  - Conventions: commit style (see CONTRIBUTING), label taxonomy, i18n\n    requirements, secrets policy (never hardcode keys), file map.\n  - Caveats: known risks, areas to be careful with.\n- CLAUDE.md vs AGENTS.md: CLAUDE.md is Claude-specific; AGENTS.md is\n  agent-agnostic (works for Cursor\u002FCopilot\u002FOpenClaw too). Keep AGENTS.md free\n  of Claude-only references.\n\n## Verification\n\n```bash\ngh label list --repo OWNER\u002FREPO --limit 200 | wc -l\ngh api repos\u002FOWNER\u002FREPO\u002Fcontents\u002F.github\u002FISSUE_TEMPLATE -q '.[].name' 2>\u002Fdev\u002Fnull\ngh api repos\u002FOWNER\u002FREPO\u002Fcontents\u002F.github\u002FPULL_REQUEST_TEMPLATE.md -q .name 2>\u002Fdev\u002Fnull\ngh api repos\u002FOWNER\u002FREPO\u002Fcontents\u002F.github\u002Fworkflows\u002Fci.yml -q .name 2>\u002Fdev\u002Fnull\ngh api repos\u002FOWNER\u002FREPO\u002Frulesets -q '.[] | {name:.name, enforcement:.enforcement}'\n```\n\nReport a final table: `module | status (applied\u002Fskipped\u002Ffailed) | note`.\n\n## Template placeholders (replace on copy)\n\nTemplates stay generic — `OWNER\u002FREPO`, `OWNER_USERNAME`, `PROJECT_NAME`,\n`YYYY-MM-DD` are placeholders the agent fills in when copying a template\ninto the target repo. **Unreplaced placeholders ship broken links** (badges,\nclone URL, discussions, security advisory, CODEOWNERS handle) into the\nuser's repo.\n\n| Placeholder | Replace with |\n|---|---|\n| `OWNER` | target repo owner login (user or org) |\n| `REPO` | target repo name |\n| `OWNER_USERNAME` | owner's default reviewer \u002F team handle |\n| `PROJECT_NAME` | project display name |\n| `YYYY-MM-DD` | current date |\n\nResolve the values once up front, then substitute in every copied file\n(`config.yml`, `README*.md`, `SECURITY.md`, `CODEOWNERS`, `AGENTS.md` \u002F\n`CLAUDE.md`, `VISION.md`, …):\n\n```bash\nO=OWNER R=REPO N=PROJECT_NAME D=$(date +%F)\nsed -i \"s|OWNER_USERNAME|$O|g; s|OWNER\u002FREPO|$O\u002F$R|g; s|PROJECT_NAME|$N|g; s|YYYY-MM-DD|$D|g\" \\\n  .github\u002FISSUE_TEMPLATE\u002Fconfig.yml README.md SECURITY.md .github\u002FCODEOWNERS AGENTS.md\n```\n\n- Replace `OWNER_USERNAME` before `OWNER\u002FREPO` — the former contains the\n  `OWNER` prefix, so order matters with naive `sed`.\n- Only `config.yml`, `README*.md`, `SECURITY.md`, `CODEOWNERS`, `AGENTS.md` \u002F\n  `CLAUDE.md`, `VISION.md`, `CHANGELOG.md` carry placeholders; the issue\n  forms, PR template, CI workflows, and CoC are placeholder-free.\n- CI templates need no substitution, but **translate** their human-facing\n  text if the user chose a non-English language.\n\n## Rules of thumb\n\n- **Idempotent**: every module can run twice with the same result.\n- **Never clobber user content**: diff first, ask before overwriting customized files.\n- **Auth first**: no token, no action — tell the user how to log in, never guess.\n- **Dry-run before destructive ops**: rulesets, branch rules, label deletion, visibility changes.\n- **Confirm scope**: org\u002Fprivate repos and anything the user didn't explicitly name.\n\n## Templates\n\nAll templates live in `templates\u002F`:\n`labels.json`, `LABELS.md`, `config.yml`, `issue-form-bug.yml`,\n`issue-form-feature.yml`, `issue-form-question.yml`, `PR_TEMPLATE.md`,\n`ci-node.yml`, `ci-python.yml`, `ci-go.yml`, `ci-rust.yml`, `CODEOWNERS`,\n`CONTRIBUTING.md`, `SECURITY.md`, `CODE_OF_CONDUCT.md`, `CLAUDE.md`,\n`AGENTS.md`, `VISION.md`, `CHANGELOG.md`, `templates\u002FREADME.md`,\n`templates\u002FREADME.zh.md`.\n",{"name":5,"description":7},"main","5269f7ea2d6c3a9bfda5ed878b6726cf509121fd","skills\u002Frepo-standardizer",5340,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot","https:\u002F\u002Fawesome-copilot.github.com\u002F","https:\u002F\u002Fgithub.com\u002Fgithub","https:\u002F\u002Fgithub.com\u002Fabout","How people build software.","2026-11-11 13:41:32",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add github\u002Fawesome-copilot --skill repo-standardizer",{"tool":68,"command":69},"bunx","bunx skills add github\u002Fawesome-copilot --skill repo-standardizer",{"tool":71,"command":72},"pnpm","pnpm dlx skills add github\u002Fawesome-copilot --skill repo-standardizer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002FSKILL.md",true,[76,82,86,90,94,98,102,106,110,114,118,124,128,132,136,140,144,148,152,156,160,164,168,172],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"agents\u002Fopenai.yaml","REFERENCE","参考文档",87,"https:\u002F\u002Fgithub.com\u002FVortex375\u002Fseraph\u002Fblob\u002Fmain\u002Fapp\u002Fseraph_app\u002F.agents\u002Fskills\u002Ftdd\u002Fagents\u002Fopenai.yaml",{"path":83,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":84,"sourceHtmlUrl":85},"mocking.md",1481,"https:\u002F\u002Fgithub.com\u002FVortex375\u002Fseraph\u002Fblob\u002Fmain\u002Fapp\u002Fseraph_app\u002F.agents\u002Fskills\u002Ftdd\u002Fmocking.md",{"path":87,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":88,"sourceHtmlUrl":89},"templates\u002FAGENTS.md",1426,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002FAGENTS.md",{"path":91,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":92,"sourceHtmlUrl":93},"templates\u002FCHANGELOG.md",256,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002FCHANGELOG.md",{"path":95,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":96,"sourceHtmlUrl":97},"templates\u002Fci-go.yml",398,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002Fci-go.yml",{"path":99,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":100,"sourceHtmlUrl":101},"templates\u002Fci-node.yml",746,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002Fci-node.yml",{"path":103,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":104,"sourceHtmlUrl":105},"templates\u002Fci-python.yml",414,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002Fci-python.yml",{"path":107,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":108,"sourceHtmlUrl":109},"templates\u002Fci-rust.yml",297,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002Fci-rust.yml",{"path":111,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":112,"sourceHtmlUrl":113},"templates\u002FCLAUDE.md",1321,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002FCLAUDE.md",{"path":115,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":116,"sourceHtmlUrl":117},"templates\u002FCODE_OF_CONDUCT.md",428,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002FCODE_OF_CONDUCT.md",{"path":119,"resourceType":120,"resourceTypeDesc":121,"sizeBytes":122,"sourceHtmlUrl":123},"templates\u002FCODEOWNERS","OTHER","其他",96,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002FCODEOWNERS",{"path":125,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":126,"sourceHtmlUrl":127},"templates\u002Fconfig.yml",291,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002Fconfig.yml",{"path":129,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":130,"sourceHtmlUrl":131},"templates\u002FCONTRIBUTING.md",1486,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002FCONTRIBUTING.md",{"path":133,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":134,"sourceHtmlUrl":135},"templates\u002Fissue-form-bug.yml",1438,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002Fissue-form-bug.yml",{"path":137,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":138,"sourceHtmlUrl":139},"templates\u002Fissue-form-feature.yml",1153,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002Fissue-form-feature.yml",{"path":141,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":142,"sourceHtmlUrl":143},"templates\u002Fissue-form-question.yml",570,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002Fissue-form-question.yml",{"path":145,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":146,"sourceHtmlUrl":147},"templates\u002Flabels.json",1865,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002Flabels.json",{"path":149,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":150,"sourceHtmlUrl":151},"templates\u002FLABELS.md",1604,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002FLABELS.md",{"path":153,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":154,"sourceHtmlUrl":155},"templates\u002FPR_TEMPLATE.md",449,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002FPR_TEMPLATE.md",{"path":157,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":158,"sourceHtmlUrl":159},"templates\u002FREADME.md",1215,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002FREADME.md",{"path":161,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":162,"sourceHtmlUrl":163},"templates\u002FREADME.zh.md",1170,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002FREADME.zh.md",{"path":165,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":166,"sourceHtmlUrl":167},"templates\u002FSECURITY.md",726,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002FSECURITY.md",{"path":169,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":170,"sourceHtmlUrl":171},"templates\u002FVISION.md",453,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Frepo-standardizer\u002Ftemplates\u002FVISION.md",{"path":173,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":174,"sourceHtmlUrl":175},"tests.md",2214,"https:\u002F\u002Fgithub.com\u002FVortex375\u002Fseraph\u002Fblob\u002Fmain\u002Fapp\u002Fseraph_app\u002F.agents\u002Fskills\u002Ftdd\u002Ftests.md",[177,207,234,262,296,313],{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":187,"publishedAt":47},"01M70KXZNX9ES38N2A8M58ZZMZ","supabase-rls-policies","Write, review, and test Supabase Row Level Security (RLS) policies so that one user cannot read or change another user's rows. Use when creating or changing tables, policies, views, or security definer functions in a Supabase project, when reviewing a migration that touches RLS, or when asked to prove user isolation with pgTAP tests that sign in as two users.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fsupabase-rls-policies\u002FSKILL.md",[183,186],{"categoryNo":184,"categoryName":185,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[188,189,190,191,192,29,193,194,195,196,197,198,199,200,201,202,203,204,205,206],"supabase","rls","supabase rls","supabase rls policies","project","review","change","read","write","security","isolation","tables","as","tests","prove","use","users","functions","with",{"skillNo":208,"name":209,"nameZh":6,"description":210,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":211,"categories":212,"keywords":214,"publishedAt":47},"01M70KWA5YWXDV6V8DZ19E3T2Y","skill-distribution-audit","Audit a skill collection before release or investigate installer omissions, archived\u002Ftemplate leakage, duplicate identities, and manifest drift. Reconcile the intended public source set, distribution manifest, and actual discovery output for a specified consumer version. Includes a deterministic set-comparison helper.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fskill-distribution-audit\u002FSKILL.md",[213],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,26,232,233],"distribution","skill distribution audit","audit","SET","deterministic","installer","for","discovery","comparison","helper","manifest","version","collection","drift","output","investigate","duplicate","release","reconcile",{"skillNo":235,"name":236,"nameZh":6,"description":237,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":238,"sourceHtmlUrl":239,"categories":240,"keywords":246,"publishedAt":47},"01M70KCJPFVW7PPQ49CC5R8JGK","logicapps-custom-code-net10-migration","Migrate Azure Logic Apps Standard local-function custom-code projects from .NET 8 to .NET 10. Use for legacy Logic Apps custom-code workspace upgrades, project\u002Fpackage configuration, custom-worker settings, publication, and integrated VS Code debugging. Not for ordinary .NET applications, standalone Azure Functions, Consumption workflows, or cloud deployment.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Flogicapps-custom-code-net10-migration\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Flogicapps-custom-code-net10-migration\u002FSKILL.md",[241],{"categoryNo":242,"categoryName":243,"taxonomyType":244,"taxonomyTypeDesc":245},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[247,43,248,249,250,251,221,192,252,253,254,255,256,257,258,203,259,260,261,46],"custom","logicapps custom code net10 migration","migration","projects","standalone","deployment","applications","local","azure","worker","upgrades","package","apps","Legacy","debugging",{"skillNo":263,"name":264,"nameZh":6,"description":265,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":266,"sourceHtmlUrl":267,"categories":268,"keywords":273,"publishedAt":47},"01M6AEBN37RQMXJ3298PEY7PG1","winmd-api-search","Find and explore Windows desktop APIs. Use when building features that need platform capabilities — camera, file access, notifications, UI controls, AI\u002FML, sensors, networking, etc. Discovers the right API for a task and retrieves full type details (methods, properties, events, enumeration values).","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fwinmd-api-search\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fwinmd-api-search\u002FSKILL.md",[269,272],{"categoryNo":270,"categoryName":271,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":242,"categoryName":243,"taxonomyType":244,"taxonomyTypeDesc":245},[274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,29,289,290,291,292,293,221,294,295],"winmd api search","search","api","windows","desktop","file access","enumeration","ui","ml","file","networking","capabilities","notifications","explore","access","features","full","camera","events","platform","methods","controls",{"skillNo":297,"name":298,"nameZh":6,"description":299,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":300,"licenseFileUrl":301,"sourceHtmlUrl":302,"categories":303,"keywords":309,"publishedAt":47},"01M6AE571R3SC1ZGE202B3NB5S","resemble-detect","Deepfake detection and media safety — detect AI-generated audio, images, video, and text, trace synthesis sources, apply watermarks, verify speaker identity, and analyze media intelligence using Resemble AI","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fresemble-detect\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fresemble-detect\u002FSKILL.md",[304,305,308],{"categoryNo":270,"categoryName":271,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":306,"categoryName":307,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[310,218,283,311,312],"resemble detect","https","identity",{"skillNo":314,"name":315,"nameZh":6,"description":316,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":300,"licenseFileUrl":317,"sourceHtmlUrl":318,"categories":319,"keywords":324,"publishedAt":47},"01M6AE30BSK2HCY4TQQ22Z8JRD","quality-playbook","Run a complete quality engineering audit on any codebase. Derives behavioral requirements from the code, generates spec-traced functional tests, runs a three-pass code review with regression tests, executes a multi-model spec audit (Council of Three), and produces a consolidated bug report with TDD-verified patches. Finds the 35% of real defects that structural code review alone cannot catch. Works with any language. Trigger on 'quality playbook', 'spec audit', 'Council of Three', 'fitness-to-purpose', or 'coverage theater'.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fquality-playbook\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fquality-playbook\u002FSKILL.md",[320,323],{"categoryNo":321,"categoryName":322,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[325,326,327,328,43,193,9,217,329,330,311,331,332,333,334,335,336,337,338,339,340,341,201,342,343,344,345],"playbook","quality playbook","quality","code review","tdd","run","report","spec","bug report","council","engineering","functional","spec audit","bug","verified","multi-model","three","coverage","model","regression","structural"]