[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71BPEQDVD7DTGFQBQJQ7JKY":3,"skill-same:01M71BPEQDVD7DTGFQBQJQ7JKY":83},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":61,"commitSha":62,"skillDirectory":63,"forksCount":64,"repositoryHtmlUrl":65,"repositoryHomepageUrl":66,"ownerHtmlUrl":67,"ownerBlogUrl":6,"ownerDescription":68,"updatedAt":69,"install":70,"resources":82},"01M71BPEQDVD7DTGFQBQJQ7JKY","unikit-skills-context",null,"Customize how a built-in unikit skill behaves in this specific project by writing workflow overrides into its skill-context file. These are per-skill workflow rules (e.g. \"\u002Funikit-review should also flag TODO comments\", \"\u002Funikit-implement should run tests after each task\"), not coding conventions. Use when the user wants to change, customize, or override how a particular unikit skill works in this project — \"customize the review skill\", \"make \u002Funikit-fix always add logging here\", \"the implement skill should do X differently\", \"add a skill rule for \u002Funikit-commit\". Use \"validate\" to find stale overrides against updated base skills. For a general coding convention (not tied to one skill) use \u002Funikit-rules; to derive rules from past mistakes use \u002Funikit-evolve.","NintendaDev\u002Funikit-ai","NintendaDev","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F181320258?v=4","01M71BFH8JJ6EBGRXBWRZK894Y","Dmitrii Vasilev","01M71BFH9T4K66TTBFNV1ZWFN5",22,"MIT","https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-skills-context\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],"context","unikit skills context","edit","write","read","past","run","how","change","todo","text","general coding","review","commit","workflow","when","writing","coding conventions","fix","project","2026-11-10 10:12:30",false,"---\nname: unikit-skills-context\ndescription: >-\n  Customize how a built-in unikit skill behaves in this specific project by writing\n  workflow overrides into its skill-context file. These are per-skill workflow rules\n  (e.g. \"\u002Funikit-review should also flag TODO comments\", \"\u002Funikit-implement should run\n  tests after each task\"), not coding conventions. Use when the user wants to change,\n  customize, or override how a particular unikit skill works in this project — \"customize\n  the review skill\", \"make \u002Funikit-fix always add logging here\", \"the implement skill\n  should do X differently\", \"add a skill rule for \u002Funikit-commit\". Use \"validate\" to find\n  stale overrides against updated base skills. For a general coding convention (not tied\n  to one skill) use \u002Funikit-rules; to derive rules from past mistakes use \u002Funikit-evolve.\nargument-hint: '\u003Cskill-name> [rule text] | validate [skill-name]'\nallowed-tools:\n  - Read\n  - Write\n  - Edit\n  - Glob\n  - Grep\n  - AskUserQuestion\ndisable-model-invocation: true\nuser-invocable: true\nmetadata:\n  author: unikit\n  version: \"1.1\"\n---\n\n# UniKit Skills — Skill Context Management\n\nAdd workflow rules to `.unikit\u002Fskill-context\u002F\u003Cskill>\u002FSKILL.md`. These are project-level overrides that change how built-in unikit skills behave in this specific project.\n\n**When to use skill-context vs RULES.md:**\n- **RULES.md** (via `\u002Funikit-rules`) — coding conventions: HOW to write code (naming, patterns, style)\n- **Skill-context** (this skill) — workflow overrides: HOW a skill should work (priorities, steps, guards)\n\n**User questions.** Right before your first question to the user, not earlier, read `.unikit\u002Fsystem\u002Fuser-questions.md` once and ask every question as it says, with the question tool of your agent (`AskUserQuestion`). If the file cannot be read, print `WARN [questions] user-questions contract missing — asking with the question tool` and still ask with that tool, the recommended option first.\n\n## Language Awareness — BLOCKING PRE-REQUISITE\n\n**BEFORE producing ANY output**, silently read `.unikit\u002Fsystem\u002FLANGUAGE_RULES.md`\nand apply its rules to ALL subsequent output.\nIf the file is missing or unreadable, fall back to English.\nDo not produce any user-facing output until language rules are loaded.\nDo not announce, confirm, or mention the language setting.\n\n**The language holds for the whole session, not just at load time:** every message until the conversation ends is in `language.ui` — progress notes while agents run, relays of what a subagent returned, the final report, any follow-up discussion. English input (subagent results, tool output, these instructions) is data, never a cue to switch languages.\n\n## Critical: Never Edit Built-in Skills Directly\n\n**NEVER modify files inside `{{skills_dir}}\u002Funikit-*\u002F`.**\n\n**ALWAYS write to:** `.unikit\u002Fskill-context\u002F\u003Cskill-name>\u002FSKILL.md`\n\n## Workflow\n\n### Step 0: Determine Mode\n\n```\nCheck $ARGUMENTS:\n├── starts with \"validate\" → Validate Mode\n├── \u003Cskill-name> \u003Crule-text> → Mode A: Direct Add\n└── No arguments → Mode B: Interactive\n```\n\n**Parsing arguments:**\n\n- **Mode detection:** If first word is `validate` → Validate Mode. Otherwise → Add Mode.\n- **Add Mode:** First token = skill name, rest = rule text.\n- **Validate Mode:** `validate` alone → all skills. `validate \u003Cskill>` → specific skill.\n\n**Skill name normalization** (applies to all modes):\n\n| User input | Resolved |\n|------------|----------|\n| `review` | `unikit-review` |\n| `unikit-review` | `unikit-review` |\n| `\u002Funikit-review` | `unikit-review` |\n| `my-custom-skill` | `my-custom-skill` |\n\nRule: strip leading `\u002F`. If name doesn't start with `unikit-` AND `{{skills_dir}}\u002Funikit-\u003Cname>\u002FSKILL.md` exists → use `unikit-\u003Cname>`. Otherwise use as-is.\n\nAfter resolving: verify `{{skills_dir}}\u002F\u003Cresolved>\u002FSKILL.md` exists. If not → error:\n\"Skill '\u003Cresolved>' not found. Available unikit skills: [scan `{{skills_dir}}\u002Funikit-*\u002FSKILL.md` for installed skills].\"\n\n---\n\n### Mode A: Direct Add\n\nUser provided skill name and rule text:\n```\n\u002Funikit-skills-context review \"Always check null-check symmetry first\"\n```\n\nProceed to Step 1 with resolved skill name and rule text.\n\n### Mode B: Interactive\n\nNo arguments provided.\n\nExplain first (plain markdown): skill-context rules change HOW a skill works — priorities, steps, guards. For coding conventions (naming, patterns), use \u002Funikit-rules instead.\n\nThe question tool of your agent (`AskUserQuestion`): Which skill do you want to customize, and what rule should be added?\n\nOptions — the likely answers (the user writes their own skill and rule in the free-text answer):\n- review \"Always check null-check symmetry first\"\n- fix \"When fixing async bugs, check cancellation cleanup\"\n- implement \"Compile after each file change\"\n\nAfter the user responds, parse skill name and rule text, then proceed to Step 1.\n\n---\n\n### Step 1: Cross-Check Against Base SKILL.md\n\nRead the base skill file: `{{skills_dir}}\u002F\u003Cresolved>\u002FSKILL.md`\n\nCheck if the base SKILL.md already covers the proposed rule:\n\n| Situation | Action |\n|-----------|--------|\n| Base already contains this exact instruction | Tell user: \"Already covered in base skill: {quote}\". Skip. |\n| Base has a weaker version of same instruction | Add to skill-context as strengthened override. Note what it strengthens. |\n| Base contradicts the proposed rule | Add to skill-context as explicit override. Warn that skill-context wins over base. |\n| No overlap with base | Add to skill-context as new rule. |\n\n### Step 2: Cross-Check Against Existing Skill-Context\n\nRead `.unikit\u002Fskill-context\u002F\u003Cskill>\u002FSKILL.md` if it exists.\n\nCheck for semantic duplicates — if a rule with the same meaning already exists in skill-context, tell user and skip.\n\n### Step 3: Add Rule to Skill-Context\n\n**If file doesn't exist** — create directory and file:\n\n```bash\nmkdir -p .unikit\u002Fskill-context\u002F\u003Cskill-name>\n```\n\n```markdown\n# Project Rules for \u002F\u003Cskill-name>\n\n> Auto-generated by `\u002Funikit-skills-context`. Do not edit manually.\n> Last updated: YYYY-MM-DD HH:mm\n\n## Rules\n\n### [Rule Name]\n**Rule**: [Specific, actionable instruction in English]\n```\n\n**If file exists** — read it, then:\n- Add new `### [Rule Name]` entry under `## Rules`\n- Update `> Last updated:` line\n\n**Formatting:**\n- Rule name: short, descriptive (2-5 words)\n- Rule text: English, imperative, specific and actionable\n- If user provided rule in non-English language, translate to English before writing\n\n### Step 4: Confirm\n\n```\n✅ Added to .unikit\u002Fskill-context\u002F\u003Cskill>\u002FSKILL.md:\n\n### [Rule Name]\n**Rule**: [the rule text]\n\nCross-check: [result — \"no overlap with base\" \u002F \"strengthens base rule on X\" \u002F \"overrides base behavior Y\"]\n```\n\n---\n\n## Validate Mode: Stale Rule Check\n\nTriggered by:\n- `\u002Funikit-skills-context validate` → check ALL skills that have skill-context files\n- `\u002Funikit-skills-context validate \u003Cskill>` → check specific skill only\n\n### Step V1: Find Skill-Context Files\n\n```\nGlob: .unikit\u002Fskill-context\u002F*\u002FSKILL.md\n```\n\nIf checking specific skill → filter to that one.\n\nIf no skill-context files found → report \"No skill-context files to validate.\" and stop.\n\n### Step V2: Compare Against Base Skills\n\nFor each skill-context file:\n\n1. Read the base `{{skills_dir}}\u002F\u003Cskill>\u002FSKILL.md`\n2. For each rule in skill-context, compare against the base:\n\n| Case | Description | Recommendation |\n|------|-------------|----------------|\n| **A: Fully covered** | Base now contains equivalent or superset rule | Remove from skill-context — base handles it |\n| **B: Conflict** | Base directly contradicts skill-context rule | User decision required — skill-context wins if kept |\n| **C: Partial overlap** | Neither fully covers the other | Analyze and present options |\n| **D: No overlap** | Rule is unique to project context | Keep as-is, no action needed |\n\nCollect all Case A\u002FB\u002FC findings. If none found → report \"All skill-context rules are current.\" and stop.\n\n### Step V3: Present Findings\n\nFor each stale rule:\n\n**Case A — Fully covered:**\n```\n### ✅ \u002Funikit-\u003Cskill> — Fully covered: [Rule Name]\n- **Base SKILL.md says:** [base rule text]\n- **Skill-context says:** [project rule text]\n- **Recommendation:** Remove from skill-context (base covers it)\n```\n\n**Case B — Conflict:**\n```\n### ⚠️ \u002Funikit-\u003Cskill> — Conflict: [Rule Name]\n- **Base SKILL.md says:** [base rule text]\n- **Skill-context says:** [project rule text]\n- **Note:** Skill-context has priority — if kept, base version is ignored\n```\n\n**Case C — Partial overlap:**\n```\n### 🔄 \u002Funikit-\u003Cskill> — Partial overlap: [Rule Name]\n- **Base SKILL.md says:** [base rule text]\n- **Skill-context says:** [project rule text]\n- **Analysis:** [explain overlap and whether parts are independent]\n- **Warning:** Skill-context has priority — if kept as-is, base's unique parts on this topic will be lost\n```\n\n### Step V4: Collect Decisions\n\nAsk each finding with the question tool of your agent (`AskUserQuestion`):\n\n**Case A:**\n\nOptions:\n1. Remove — trust base skill\n2. Keep — ensure priority of skill-context rule\n\nBased on choice:\n- Remove → delete the rule section from skill-context file\n- Keep → no changes needed\n\n**Case B:**\n\nOptions:\n1. Keep skill-context — override base\n2. Remove — trust base\n3. Rewrite — merge both formulations\n\nBased on choice:\n- Keep skill-context → no changes needed\n- Remove → delete the rule section from skill-context file\n- Rewrite → replace rule text with merged version\n\n**Case C:**\n\nOptions:\n1. Rewrite — include unique parts from both\n2. Keep as-is — base's parts lost\n3. Remove — delete skill-context rule\n\nBased on choice:\n- Rewrite → replace rule text with new version combining both\n- Keep as-is → no changes needed\n- Remove → delete the rule section from skill-context file\n\n### Step V5: Apply Decisions\n\nFor each decision:\n- **Remove:** Delete the rule section from skill-context file\n- **Rewrite:** Replace rule text with new version\n- **Keep:** No changes needed\n\nAfter applying:\n- Update `> Last updated:` line\n- If a skill-context file has no rules left (only header remains) → delete the file and its directory\n\n---\n\n## Rules\n\n1. **Skill-context only** — all rules go to `.unikit\u002Fskill-context\u002F`, NEVER to `{{skills_dir}}\u002Funikit-*\u002F`\n2. **English only** — skill-context files are always in English regardless of user's language\n3. **Workflow rules only** — skill-context is for HOW skills work, not coding conventions (use `\u002Funikit-rules` for those)\n4. **No duplicates** — always cross-check against base SKILL.md and existing skill-context\n5. **Reversible** — user approves changes in validate mode before applying\n6. **Ownership boundary** — this command owns `.unikit\u002Fskill-context\u002F*`; treats base skills (`{{skills_dir}}\u002F`) and rules (`.unikit\u002Fmemory\u002F`, `.unikit\u002FRULES.md`, `.unikit\u002Frules\u002F`) as read-only\n\n## Examples\n\n```\n\u002Funikit-skills-context review \"Always check null-check symmetry first\"\n\n> ✅ Added to .unikit\u002Fskill-context\u002Funikit-review\u002FSKILL.md:\n> ### Null-Check Priority\n> **Rule**: Always check null-check symmetry first when reviewing code.\n> Cross-check: no overlap with base\n```\n\n```\n\u002Funikit-skills-context validate\n\n> 🔍 Checking 2 skill-context files...\n>\n> ✅ \u002Funikit-fix — Fully covered: Cancellation Cleanup\n> Base SKILL.md now includes: \"check cancellation cleanup in async methods\"\n> Recommendation: Remove from skill-context\n>\n> ✅ \u002Funikit-review — No overlap: all 3 rules are project-specific\n>\n> ⚠️ 1 stale rule found.\n> [question] Remove it? — Remove \u002F Keep\n```\n","# UniKit Skills — Skill Context Management\n\nAdd workflow rules to `.unikit\u002Fskill-context\u002F\u003Cskill>\u002FSKILL.md`. These are project-level overrides that change how built-in unikit skills behave in this specific project.\n\n**When to use skill-context vs RULES.md:**\n- **RULES.md** (via `\u002Funikit-rules`) — coding conventions: HOW to write code (naming, patterns, style)\n- **Skill-context** (this skill) — workflow overrides: HOW a skill should work (priorities, steps, guards)\n\n**User questions.** Right before your first question to the user, not earlier, read `.unikit\u002Fsystem\u002Fuser-questions.md` once and ask every question as it says, with the question tool of your agent (`AskUserQuestion`). If the file cannot be read, print `WARN [questions] user-questions contract missing — asking with the question tool` and still ask with that tool, the recommended option first.\n\n## Language Awareness — BLOCKING PRE-REQUISITE\n\n**BEFORE producing ANY output**, silently read `.unikit\u002Fsystem\u002FLANGUAGE_RULES.md`\nand apply its rules to ALL subsequent output.\nIf the file is missing or unreadable, fall back to English.\nDo not produce any user-facing output until language rules are loaded.\nDo not announce, confirm, or mention the language setting.\n\n**The language holds for the whole session, not just at load time:** every message until the conversation ends is in `language.ui` — progress notes while agents run, relays of what a subagent returned, the final report, any follow-up discussion. English input (subagent results, tool output, these instructions) is data, never a cue to switch languages.\n\n## Critical: Never Edit Built-in Skills Directly\n\n**NEVER modify files inside `{{skills_dir}}\u002Funikit-*\u002F`.**\n\n**ALWAYS write to:** `.unikit\u002Fskill-context\u002F\u003Cskill-name>\u002FSKILL.md`\n\n## Workflow\n\n### Step 0: Determine Mode\n\n```\nCheck $ARGUMENTS:\n├── starts with \"validate\" → Validate Mode\n├── \u003Cskill-name> \u003Crule-text> → Mode A: Direct Add\n└── No arguments → Mode B: Interactive\n```\n\n**Parsing arguments:**\n\n- **Mode detection:** If first word is `validate` → Validate Mode. Otherwise → Add Mode.\n- **Add Mode:** First token = skill name, rest = rule text.\n- **Validate Mode:** `validate` alone → all skills. `validate \u003Cskill>` → specific skill.\n\n**Skill name normalization** (applies to all modes):\n\n| User input | Resolved |\n|------------|----------|\n| `review` | `unikit-review` |\n| `unikit-review` | `unikit-review` |\n| `\u002Funikit-review` | `unikit-review` |\n| `my-custom-skill` | `my-custom-skill` |\n\nRule: strip leading `\u002F`. If name doesn't start with `unikit-` AND `{{skills_dir}}\u002Funikit-\u003Cname>\u002FSKILL.md` exists → use `unikit-\u003Cname>`. Otherwise use as-is.\n\nAfter resolving: verify `{{skills_dir}}\u002F\u003Cresolved>\u002FSKILL.md` exists. If not → error:\n\"Skill '\u003Cresolved>' not found. Available unikit skills: [scan `{{skills_dir}}\u002Funikit-*\u002FSKILL.md` for installed skills].\"\n\n---\n\n### Mode A: Direct Add\n\nUser provided skill name and rule text:\n```\n\u002Funikit-skills-context review \"Always check null-check symmetry first\"\n```\n\nProceed to Step 1 with resolved skill name and rule text.\n\n### Mode B: Interactive\n\nNo arguments provided.\n\nExplain first (plain markdown): skill-context rules change HOW a skill works — priorities, steps, guards. For coding conventions (naming, patterns), use \u002Funikit-rules instead.\n\nThe question tool of your agent (`AskUserQuestion`): Which skill do you want to customize, and what rule should be added?\n\nOptions — the likely answers (the user writes their own skill and rule in the free-text answer):\n- review \"Always check null-check symmetry first\"\n- fix \"When fixing async bugs, check cancellation cleanup\"\n- implement \"Compile after each file change\"\n\nAfter the user responds, parse skill name and rule text, then proceed to Step 1.\n\n---\n\n### Step 1: Cross-Check Against Base SKILL.md\n\nRead the base skill file: `{{skills_dir}}\u002F\u003Cresolved>\u002FSKILL.md`\n\nCheck if the base SKILL.md already covers the proposed rule:\n\n| Situation | Action |\n|-----------|--------|\n| Base already contains this exact instruction | Tell user: \"Already covered in base skill: {quote}\". Skip. |\n| Base has a weaker version of same instruction | Add to skill-context as strengthened override. Note what it strengthens. |\n| Base contradicts the proposed rule | Add to skill-context as explicit override. Warn that skill-context wins over base. |\n| No overlap with base | Add to skill-context as new rule. |\n\n### Step 2: Cross-Check Against Existing Skill-Context\n\nRead `.unikit\u002Fskill-context\u002F\u003Cskill>\u002FSKILL.md` if it exists.\n\nCheck for semantic duplicates — if a rule with the same meaning already exists in skill-context, tell user and skip.\n\n### Step 3: Add Rule to Skill-Context\n\n**If file doesn't exist** — create directory and file:\n\n```bash\nmkdir -p .unikit\u002Fskill-context\u002F\u003Cskill-name>\n```\n\n```markdown\n# Project Rules for \u002F\u003Cskill-name>\n\n> Auto-generated by `\u002Funikit-skills-context`. Do not edit manually.\n> Last updated: YYYY-MM-DD HH:mm\n\n## Rules\n\n### [Rule Name]\n**Rule**: [Specific, actionable instruction in English]\n```\n\n**If file exists** — read it, then:\n- Add new `### [Rule Name]` entry under `## Rules`\n- Update `> Last updated:` line\n\n**Formatting:**\n- Rule name: short, descriptive (2-5 words)\n- Rule text: English, imperative, specific and actionable\n- If user provided rule in non-English language, translate to English before writing\n\n### Step 4: Confirm\n\n```\n✅ Added to .unikit\u002Fskill-context\u002F\u003Cskill>\u002FSKILL.md:\n\n### [Rule Name]\n**Rule**: [the rule text]\n\nCross-check: [result — \"no overlap with base\" \u002F \"strengthens base rule on X\" \u002F \"overrides base behavior Y\"]\n```\n\n---\n\n## Validate Mode: Stale Rule Check\n\nTriggered by:\n- `\u002Funikit-skills-context validate` → check ALL skills that have skill-context files\n- `\u002Funikit-skills-context validate \u003Cskill>` → check specific skill only\n\n### Step V1: Find Skill-Context Files\n\n```\nGlob: .unikit\u002Fskill-context\u002F*\u002FSKILL.md\n```\n\nIf checking specific skill → filter to that one.\n\nIf no skill-context files found → report \"No skill-context files to validate.\" and stop.\n\n### Step V2: Compare Against Base Skills\n\nFor each skill-context file:\n\n1. Read the base `{{skills_dir}}\u002F\u003Cskill>\u002FSKILL.md`\n2. For each rule in skill-context, compare against the base:\n\n| Case | Description | Recommendation |\n|------|-------------|----------------|\n| **A: Fully covered** | Base now contains equivalent or superset rule | Remove from skill-context — base handles it |\n| **B: Conflict** | Base directly contradicts skill-context rule | User decision required — skill-context wins if kept |\n| **C: Partial overlap** | Neither fully covers the other | Analyze and present options |\n| **D: No overlap** | Rule is unique to project context | Keep as-is, no action needed |\n\nCollect all Case A\u002FB\u002FC findings. If none found → report \"All skill-context rules are current.\" and stop.\n\n### Step V3: Present Findings\n\nFor each stale rule:\n\n**Case A — Fully covered:**\n```\n### ✅ \u002Funikit-\u003Cskill> — Fully covered: [Rule Name]\n- **Base SKILL.md says:** [base rule text]\n- **Skill-context says:** [project rule text]\n- **Recommendation:** Remove from skill-context (base covers it)\n```\n\n**Case B — Conflict:**\n```\n### ⚠️ \u002Funikit-\u003Cskill> — Conflict: [Rule Name]\n- **Base SKILL.md says:** [base rule text]\n- **Skill-context says:** [project rule text]\n- **Note:** Skill-context has priority — if kept, base version is ignored\n```\n\n**Case C — Partial overlap:**\n```\n### 🔄 \u002Funikit-\u003Cskill> — Partial overlap: [Rule Name]\n- **Base SKILL.md says:** [base rule text]\n- **Skill-context says:** [project rule text]\n- **Analysis:** [explain overlap and whether parts are independent]\n- **Warning:** Skill-context has priority — if kept as-is, base's unique parts on this topic will be lost\n```\n\n### Step V4: Collect Decisions\n\nAsk each finding with the question tool of your agent (`AskUserQuestion`):\n\n**Case A:**\n\nOptions:\n1. Remove — trust base skill\n2. Keep — ensure priority of skill-context rule\n\nBased on choice:\n- Remove → delete the rule section from skill-context file\n- Keep → no changes needed\n\n**Case B:**\n\nOptions:\n1. Keep skill-context — override base\n2. Remove — trust base\n3. Rewrite — merge both formulations\n\nBased on choice:\n- Keep skill-context → no changes needed\n- Remove → delete the rule section from skill-context file\n- Rewrite → replace rule text with merged version\n\n**Case C:**\n\nOptions:\n1. Rewrite — include unique parts from both\n2. Keep as-is — base's parts lost\n3. Remove — delete skill-context rule\n\nBased on choice:\n- Rewrite → replace rule text with new version combining both\n- Keep as-is → no changes needed\n- Remove → delete the rule section from skill-context file\n\n### Step V5: Apply Decisions\n\nFor each decision:\n- **Remove:** Delete the rule section from skill-context file\n- **Rewrite:** Replace rule text with new version\n- **Keep:** No changes needed\n\nAfter applying:\n- Update `> Last updated:` line\n- If a skill-context file has no rules left (only header remains) → delete the file and its directory\n\n---\n\n## Rules\n\n1. **Skill-context only** — all rules go to `.unikit\u002Fskill-context\u002F`, NEVER to `{{skills_dir}}\u002Funikit-*\u002F`\n2. **English only** — skill-context files are always in English regardless of user's language\n3. **Workflow rules only** — skill-context is for HOW skills work, not coding conventions (use `\u002Funikit-rules` for those)\n4. **No duplicates** — always cross-check against base SKILL.md and existing skill-context\n5. **Reversible** — user approves changes in validate mode before applying\n6. **Ownership boundary** — this command owns `.unikit\u002Fskill-context\u002F*`; treats base skills (`{{skills_dir}}\u002F`) and rules (`.unikit\u002Fmemory\u002F`, `.unikit\u002FRULES.md`, `.unikit\u002Frules\u002F`) as read-only\n\n## Examples\n\n```\n\u002Funikit-skills-context review \"Always check null-check symmetry first\"\n\n> ✅ Added to .unikit\u002Fskill-context\u002Funikit-review\u002FSKILL.md:\n> ### Null-Check Priority\n> **Rule**: Always check null-check symmetry first when reviewing code.\n> Cross-check: no overlap with base\n```\n\n```\n\u002Funikit-skills-context validate\n\n> 🔍 Checking 2 skill-context files...\n>\n> ✅ \u002Funikit-fix — Fully covered: Cancellation Cleanup\n> Base SKILL.md now includes: \"check cancellation cleanup in async methods\"\n> Recommendation: Remove from skill-context\n>\n> ✅ \u002Funikit-review — No overlap: all 3 rules are project-specific\n>\n> ⚠️ 1 stale rule found.\n> [question] Remove it? — Remove \u002F Keep\n```\n",{"name":5,"metadata":49,"description":7,"allowed-tools":52,"argument-hint":59,"user-invocable":60,"disable-model-invocation":60},{"author":50,"version":51},"unikit","1.1",[53,54,55,56,57,58],"Read","Write","Edit","Glob","Grep","AskUserQuestion","\u003Cskill-name> [rule text] | validate [skill-name]",true,"main","ae3c6dfffd26d9b45b9d96d71ba2c122c50b67ae","skills\u002Funikit-skills-context",1,"https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai","https:\u002F\u002Funikit.nintenda.dev","https:\u002F\u002Fgithub.com\u002FNintendaDev","Unity Developer. Building games and UniKit AI","2026-11-08 15:05:51",{"source":8,"skillName":5,"commands":71,"prompt":81,"zipAvailable":60},[72,75,78],{"tool":73,"command":74},"npx","npx skills add NintendaDev\u002Funikit-ai --skill unikit-skills-context",{"tool":76,"command":77},"bunx","bunx skills add NintendaDev\u002Funikit-ai --skill unikit-skills-context",{"tool":79,"command":80},"pnpm","pnpm dlx skills add NintendaDev\u002Funikit-ai --skill unikit-skills-context","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-skills-context\u002FSKILL.md",[],[84,103,128,149,175,194],{"skillNo":85,"name":50,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":90,"publishedAt":44},"01M71BQ00EXGX51PPCDY7VG334","Initialize the UniKit framework in a project. Scans the current project to detect the engine and real tech stack, then generates the base framework documents that give AI agents context about the project — the resolved project description, the architecture doc, AGENTS.md, and the user-editable .unikit\u002Fconfig.yaml. This is the one-time, whole-project setup run before any other unikit skill. Use whenever the user wants to initialize, set up, or onboard the framework, e.g. \"initialize unikit\", \"init the framework\", \"set up unikit\", \"set up the project\", \"configure AI context\", \"scan my project and set it up\", \"bootstrap the project\". It also actualizes the config of a project already set up — say \"update the config\", \"add missing settings\", \"actualize configuration\", \"fix my config\". On a set-up project it offers the actions to choose from.","https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit\u002FSKILL.md",[89],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[50,43,91,92,42,93,94,95,30,96,28,27,97,26,98,24,99,100,101,102],"time","actions","documents","architecture","stack","update","config","git","initialize","tech","scan","use",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":113,"publishedAt":44},"01M71BPRTMKW7FRAZZBN44NW5Q","unikit-verify","Verify a completed implementation against the plan in .unikit\u002Fcode\u002Fplans\u002F. Checks that every task was implemented, nothing was forgotten, the code compiles, the recorded test run still matches the code, and {{engine_name}} conventions are followed. Use after \u002Funikit-implement completes, or when the user says \"verify\", \"check the work\", \"did we miss anything\". For code review use \u002Funikit-review instead.","https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-verify\u002FSKILL.md",[109,112],{"categoryNo":110,"categoryName":111,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[114,115,116,117,118,119,30,28,27,26,98,120,121,102,122,123,124,125,126,127],"unikit verify","verify","powershell","code review","phase","plan","for","system","implement","check","engine","research","name","quality",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":44},"01M71BPM35M5ETPA4E7EKQYRWD","unikit-todo","Manage the project's TODO list in .unikit\u002FTODO.md — capture work to remember for later, not to do right now. Use it to add a deferred item, mark a todo complete, or show the list. The point is to park tasks you don't want to act on in the moment but don't want to forget. Trigger on \"add a todo\", \"add this to the todo list\", \"put X on the todo list\", \"remind me to...\", \"don't forget to...\", \"note this for later\", \"we should do this later\", \"mark this todo done\", \"what's on the todo list\", \"what's left to do\". This is only for parking reminders — to actually plan or do the work now, use \u002Funikit-plan, \u002Funikit-implement, or \u002Funikit-execute.","https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-todo\u002FSKILL.md",[],[135,33,136,137,43,138,139,140,141,142,143,144,119,145,146,147,28,27,26,148],"unikit todo","remind","show","todo list","only","now","you","done","tasks","work","me","reminders","later","act",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":162,"publishedAt":44},"01M71BP7K5KEGJV4ASRKPG1DM8","unikit-rules","Add a short, project-specific rule, convention, or override to .unikit\u002FRULES.md — the quick-capture inbox for this project's rules (common rules always load; topic files in .unikit\u002Frules\u002F load when the work matches), automatically loaded by \u002Funikit-implement (later promotable via \u002Funikit-memory migrate-rules). Works only with a rule typed as a prompt — it does NOT read files, folders, URLs, or PDFs. Cross-checks the knowledge base (RULES_INDEX.md) to avoid duplicating core\u002Fstack entries. Use for one-line conventions and corrections: \"add a rule\", \"remember this\", \"convention\", \"always do X\", \"never use Y\", \"from now on do Z\", or when the user corrects agent behavior and wants it remembered; also \"split the rules into topics\" (optimise), \"clean up the rules\" (prune), \"shorten RULES.md\" (compact), by keyword or in plain words. If the user points to a source (file, folder, URL, PDF, article, book) or wants to research\u002Fdocument framework usage, use \u002Funikit-memory; for architecture decisions use ARCHITECTURE.md.","https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-rules\u002FSKILL.md",[155,158,161],{"categoryNo":156,"categoryName":157,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理",{"categoryNo":159,"categoryName":160,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[163,164,165,166,43,167,168,169,170,171,94,172,34,173,95,147,28,27,26,174],"Rules","unikit rules","quick","PDF","clean","knowledge","files","URL","migrate","batch","knowledge base","prune",{"skillNo":176,"name":177,"nameZh":6,"description":178,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":179,"categories":180,"keywords":181,"publishedAt":44},"01M71BP02S49HHD4R5X6N12C9Q","unikit-rules-registry","Orchestrate the remote rules registry — the shared registry (often connected as a local folder or git repo) that the project's rules are published to and pulled from. Three modes, picked from the user's wording: create scaffolds a new local rules registry (\"create a local rules registry\", \"init a rules registry\"); update migrates\u002Fpromotes local knowledge-base rules from .unikit\u002Fmemory\u002F into the remote registry with automatic semver bumps (\"migrate local rules to the remote registry\", \"promote my rules to the registry\", \"push local rules\", \"publish local rules\", \"update the rules registry\"); sync pulls registry updates back into memory (\"sync the rules registry\", \"pull registry updates\"). Pass \"--module \u003Cid>\" to scope to one knowledge-base module. This skill ONLY orchestrates the CLI (`unikit-ai rules *`) — it never edits .unikit.json or .unikit\u002Fmemory\u002F sources directly.","https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-rules-registry\u002FSKILL.md",[],[182,163,183,184,43,185,168,186,171,187,96,28,27,98,188,189,190,191,192,193],"registry","unikit rules registry","shared","local","remote","create","ai rules","automatic","semver","knowledge-base","as","three",{"skillNo":195,"name":196,"nameZh":6,"description":197,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":198,"categories":199,"keywords":205,"publishedAt":44},"01M71BNWH4SE1W3E5Y50Z1KX6K","unikit-roadmap","Create or update a strategic project roadmap with major milestones. Generates .unikit\u002FROADMAP.md — a high-level checklist of project goals. Use when user says \"roadmap\", \"project plan\", \"milestones\", \"what to build next\", \"strategic goals\", or wants to see big-picture progress. Also use when the user asks to check which milestones are done or wants to plan the overall project direction.","https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-roadmap\u002FSKILL.md",[200],{"categoryNo":201,"categoryName":202,"taxonomyType":203,"taxonomyTypeDesc":204},"01JBSEEDCAT000000000000031","产品经理","PROFESSION","适用职业",[206,207,208,209,43,210,39,142,211,187,119,212,213,214,96,28,27,26,98,215],"unikit roadmap","roadmap","which","direction","milestones","Bash","progress","next","project plan","vision"]