A test skill from an extension
日本語の概要は準備中です。原文の説明を表示しています。
Generate and maintain the project's TECHNICAL documentation from its codebase — scans the project structure, tech stack, and module boundaries, then writes a lean README landing page plus detailed topic pages (architecture, modules, setup, build, APIs), only the docs that are relevant. Use whenever the user wants to create, update, or validate documentation of the CODE or the project itself, e.g. "generate documentation", "create docs", "write the README", "update the project docs", "document the codebase", "document this project's architecture", "validate the project documentation". This is CODE / project documentation only — it never documents the game design. To render the GAME DESIGN (the GDD: systems, flows, content, economy) for people to read use /unikit-gd-docs.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Generate, maintain, and improve documentation for game projects following a landing-page README + detailed docs/ structure.
docs/. Each file is self-contained — one topic, one page.docs/, README links to it — does not repeat it.BEFORE producing ANY output, silently read .unikit/system/LANGUAGE_RULES.md
and apply its rules to ALL subsequent output.
If the file is missing or unreadable, fall back to English.
Do not produce any user-facing output until language rules are loaded.
Do not announce, confirm, or mention the language setting.
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.
This skill uses a named delegation alias for Agent(...) calls. The alias is the single
place where its delegate's agent type and call arguments are declared — call sites name
the alias and never carry a type or a model argument of their own.
Model argument. Before the first dispatch of an alias below, read .unikit/config.yaml
(a missing file, block or key is not an error) and settle the model argument once:
subagents.model.{{agent_id}} holds a model name — pass model: <name> with every call,
exactly as written (this runtime's own spelling of the model argument, if it differs).inherit, or is present and empty — pass no model argument; the agent runs on the
model of this session."{{agent_model_default}}"; an empty string
means pass no model argument.If the runtime rejects the model name, repeat that call once without the model argument and
report WARN [delegation] model "<name>" rejected — retried on the session model.
recon-agent — read-only parallel reconnaissance. Expands to:
Agent({{agent_call_reader}} prompt: "<focused question> You are read-only: edit and write nothing.")
Every question you send ends with the sentence You are read-only: edit and write nothing., verbatim.
Fallback: if the Agent tool is unavailable, investigate inline with Glob/Grep/Read.
[<- Предыдущая], Назад к README, Далее ->, См. также)docs-config.json is NOT translated — it stays in English (machine-readable config).unikit/config.yaml — extract language.ui and language.artifacts (all subsequent output uses these language settings).unikit/DESCRIPTION.md (if exists) — project overview, tech stack.unikit/ARCHITECTURE.md (if exists) — architecture decisions, module structure.unikit/skill-context/unikit-docs/SKILL.md — MANDATORY if exists. Project-specific overrides. Skill-context rules win over general rules on conflict.AGENTS.md (if exists) — current documentation index--web → Also generate HTML version of documentation (see Step 6)
This is the heart of universality. Scan the project to understand its real structure before generating anything.
Read {{skills_dir}}/{{self_name}}/references/ENGINE_RULES.md — this file is installed by the unikit setup and contains all engine-specific detection tables, folder structure patterns, module boundary mechanism, and deep analysis patterns for the current project's engine.
Using the detection tables from the loaded engine rules file, scan the project's package manifest and plugin directories for known frameworks.
Record detected stack — it determines which conditional documents to generate.
Using the folder structure patterns from the loaded engine rules file, scan the project for script locations, modular structures, special folders, scenes, and tests. Don't assume any specific structure — discover it.
Also scan for module boundary files (per engine rules) to map the project's module/assembly structure.
Check if .unikit/docs-config.json exists:
If exists → load it, then run reconciliation (Step 1.5) to sync config with reality.
If not exists → generate based on detection results:
{
"detected_stack": {
"engine": "{{engine_name}} 6 (6000.0.68f1)",
"di": "Zenject",
"async": "UniTask",
"events": "Custom SignalBus",
"ui": "ASPID MVVM",
"reactive": "R3"
},
"scan_paths": {
"scripts": ["Assets/Game/Scripts"],
"modules": ["Assets/Modules", "Assets/Modules/Pawnshop"],
"scenes": ["Assets/Game/Scenes"],
"editor": ["Assets/Editor", "Assets/Game/Scripts/Editor"],
"tests": ["Assets/Game/Tests"]
},
"exclude_paths": [
"Assets/Plugins",
"Assets/Third-Party Assets"
],
"documents": {
"core": ["readme", "getting-started", "architecture", "project-map"],
"conditional": ["di-bindings", "events", "save-system", "game-systems", "testing", "editor-tools"]
},
"output_dir": "docs"
}
Present the generated config to the user for confirmation before proceeding. This is their chance to add paths, remove documents, or adjust detection results.
Conditional document rules — generate only if detected:
| Document | Generate when |
|---|---|
di-bindings | DI framework detected (Zenject, VContainer, etc.) |
events | Event/signal system detected |
save-system | Save serialization classes detected |
game-systems | Gameplay controllers, FSM, AI systems detected |
testing | Test assembly definitions detected |
editor-tools | Custom Editor scripts detected |
build | Addressables or custom build pipeline detected |
ui-system | UI framework beyond basic UGUI detected |
When docs-config.json already exists, run a three-way comparison: config vs detected state vs existing docs/. This ensures the config stays in sync as the project evolves.
a) Validate scan_paths — do configured paths still exist?
For each path in scan_paths, check if it exists on disk:
WARN: "Path Assets/OldFolder from config not found. Remove from config?"b) Detect new paths — did the project grow?
Scan Assets/ for common script locations (same list from Step 1.2). If a new populated folder is found that isn't in scan_paths or exclude_paths:
INFO: "Found Assets/NewModule/ with scripts — not in config. Add to scan_paths?"c) Reconcile tech stack — did packages change?
Re-run detection (Step 1.1) and compare with detected_stack in config:
| Situation | Action |
|---|---|
| New framework found (not in config) | Suggest: "Detected Mirror in manifest.json. Add networking document?" → update config + generate doc |
| Framework removed (in config but not detected) | Suggest: "Zenject no longer detected. Keep di-bindings document?" → user decides |
| Version changed | Silently update detected_stack in config |
d) Reconcile documents — config vs docs/ folder
| Situation | Action |
|---|---|
| Document in config but no file in docs/ | Generate it (probably new addition by user) |
| Document NOT in config but file exists in docs/ | Do NOT delete. Skip updates. Warn: "docs/save-system.md exists but is not in config — it won't be updated" |
| Document in config, file exists | Update normally (State C behavior) |
Any file under docs/design/** | Out of scope — owned by /unikit-gd-docs. Do NOT warn, suggest, absorb into config, or touch it. Only the top-level docs/*.md is reconciled here. |
e) Present reconciliation report
If any discrepancies found, show a summary before proceeding:
Config reconciliation:
Paths:
✅ Assets/Game/Scripts — exists
✅ Assets/Modules — exists
⚠️ Assets/OldFolder — not found (remove from config?)
🔍 Assets/NewFeature/ — found, not in config (add?)
Tech stack:
✅ DI: Zenject — unchanged
🔍 Networking: Mirror — detected, not in config
❌ Save: Custom SaveSerializer — no longer detected
Documents:
✅ 4 core + 3 conditional — in sync
🔍 networking — suggested (Mirror detected)
⚠️ docs/save-system.md — exists but removed from config
Apply suggestions?
1. Apply all
2. Let me pick
3. Skip — use config as-is
Based on choice:
docs-config.json with all suggestions, proceed to Step 1.6After reconciliation, update docs-config.json with confirmed changes and proceed to Step 1.5.
Before generating any documents, systematically explore the codebase to build a deep understanding of how systems connect. This step transforms surface-level detection (Step 1) into the rich relationship map that makes documentation truly valuable.
This step is mandatory. Shallow detection produces shallow docs — catalogs of classes without explaining how they work together. The quality of documentation directly depends on the depth of analysis performed here.
Launch multiple exploration tasks in parallel using the recon-agent alias (declared in ## Delegation agents) to cover different analysis dimensions. Each substep below (1.6.1–1.6.4) should be a separate recon-agent dispatch with a focused prompt.
Fallback: If Agent tool is unavailable, perform analysis inline using Glob/Grep/Read.
Trace the full startup sequence from entry scene to gameplay-ready state:
*Installer.cs files → read each one fully, extract every bindingOutput: Ordered initialization graph with dependencies between steps.
Build a full catalog of ALL inter-system communication — not just the obvious signals:
SignalBus events:
ISignal implementations (grep : ISignal in all project .cs files)Invoke<Signal> (publishers) and Subscribe<Signal> (subscribers)R3 reactive streams:
ReactiveProperty<>, Subject<>, ReadOnlyReactiveProperty<> declarations.Subscribe(), .Select(), .Where(), .Switch())Direct DI dependencies:
Output: Complete communication topology with three layers: signals, reactive streams, DI dependencies.
Trace 2-3 key user-facing features from trigger to completion:
Pick flows that touch the most systems — these reveal the real architecture.
Output: Step-by-step sequence for each flow with class names and mechanisms at each boundary.
Build a matrix showing how major systems interact:
| Characters | Trade | MiniGames | Wallets | Save | UI
Characters | — | DI | Signal | — | — | R3
Trade | DI | — | DI | DI | Save | Signal
For each non-empty cell: note the mechanism (DI, Signal, R3, Direct) and direction.
Output: Interaction matrix with mechanism annotations + list of hub systems.
Merge outputs from all parallel Agent results. This analysis is NOT published — it feeds into Step 3 to produce rich, connected documentation.
Key things to capture:
State A: No README.md → Full generation (README + docs/)
State B: README.md exists, no docs/ → Analyze README, propose split into docs/
State C: README.md + docs/ exist → Audit and improve
State C with --web flag — ask the user:
Documentation already exists (README.md + docs/).
Options:
1. Generate HTML only — build site from current docs
2. Audit & improve first — check for issues, then generate HTML
3. Audit only — check without generating HTML
Based on choice:
Scan project root for .md files. Propose consolidating relevant ones into docs/:
| Root file | Target in docs/ | Action |
|---|---|---|
CONTRIBUTING.md | docs/contributing.md | Move |
ARCHITECTURE.md | docs/architecture.md | Move |
SETUP.md | docs/getting-started.md | Merge |
TESTING.md | docs/testing.md | Move |
Files that stay in root: README.md, CHANGELOG.md, LICENSE, CODE_OF_CONDUCT.md, AGENTS.md.
Always ask before moving. Never force-move files.
Present detected documents to the user:
Based on project scan:
Core documents (always generated):
✅ README.md — project landing page
✅ docs/getting-started.md — setup, prerequisites, first run
✅ docs/architecture.md — project structure and patterns
✅ docs/project-map.md — modules, assemblies, namespaces
Conditional documents (detected):
✅ docs/di-bindings.md — [FrameworkName] installer map
✅ docs/events.md — event system catalog
✅ docs/testing.md — test infrastructure
❌ docs/networking.md — no networking framework detected
Options:
1. Generate all detected
2. Let me pick
3. Add more topics
Based on choice:
For the README template and content guidelines → read {{skills_dir}}/{{self_name}}/references/DOC-TEMPLATES.md (README section).
Key rules:
detected_stack.unikit/DESCRIPTION.md or codebase scanFor content guidelines per document type → read {{skills_dir}}/{{self_name}}/references/DOC-TEMPLATES.md.
Every file follows this structure (navigation text in project language):
[<- Previous](prev.md) . [Back to README](../README.md) . [Next ->](next.md)
# Topic Title
Content with tables, code blocks, diagrams.
## See Also
- [Related Topic](topic.md) — brief description
Navigation text is translated to the project language. For example, with "language": "ru":
[<- Предыдущая](prev.md) . [Назад к README](../README.md) . [Далее ->](next.md)
## См. также
Navigation link order follows the Documentation table in README.md. First page omits prev link; last page omits next link.
Content generation approach:
recon-agent dispatch for specific details not covered by the analysis. Fallback: If Agent tool is unavailable, use Glob/Grep/Read inlineMandatory after any content change. Read every generated/modified file and run the full review.
For comprehensive checklists (Technical, {{engine_name}}-Specific, "New User Eyes" readability, Standards Compliance) → read {{skills_dir}}/{{self_name}}/references/REVIEW-CHECKLISTS.md.
Key areas to verify:
.unikit/config.yaml (language.artifacts); code identifiers and file names in EnglishFix issues before presenting result to the user.
If files were moved from root into docs/ (Step 2.1) — offer to delete originals after review confirms content is preserved.
Always ask before deleting. The user may want to keep originals temporarily.
When --web flag is passed:
For the complete conversion process, template placeholders, nav_links format, markdown→HTML conversion rules, and auto-features documentation → read {{skills_dir}}/{{self_name}}/references/HTML-GENERATION.md.
Summary of the process:
docs-html/ directorytemplates/html-template.html (use as base for all pages){{skills_dir}}/{{self_name}}/references/HTML-GENERATION.md{project_name}, {page_title}, {nav_links}, {content}, {prev_link}, {next_link}).md links to .htmlclass="active" on current pagedocs-html/ to .gitignore if not already thereFile mapping: README.md → index.html, docs/*.md → *.html. The docs/*.md glob is
intentionally top-level / non-recursive — it does not descend into docs/design/**,
which is owned and rendered (Markdown and, under its own --web, HTML) by /unikit-gd-docs,
the game-design GDD export. Never relink, convert, or overwrite a docs/design/ page.
If AGENTS.md exists, update its ## Documentation section:
## Documentation
| Document | Path | Description |
|----------|------|-------------|
| README | README.md | Project landing page |
| Getting Started | docs/getting-started.md | Installation and setup |
| Architecture | docs/architecture.md | Project structure and patterns |
| ... | ... | ... |
List README first, then docs/ files in Documentation table order. Keep descriptions concise (<10 words).
If config was generated in Step 1.3, save to .unikit/docs-config.json. This allows future runs to skip detection and respect user customizations.
Suggest the user to free up context space if needed: /clear (full reset) or /compact (compress history).
.unikit/config.yaml (language.artifacts) for all prose, headings, navigation, descriptions, and user-facing messages. File names, code identifiers, and framework names stay in English.README.md, the top-level docs/*.md (the non-design pages), docs-html/*, .unikit/docs-config.json, and the Documentation section in AGENTS.md. It does NOT own docs/design/** (the game-design GDD render, owned by /unikit-gd-docs), .unikit/ARCHITECTURE.md, .unikit/RULES.md, or .unikit/DESCRIPTION.md.ARCHITECTURE.md or DESCRIPTION.md exist in .unikit/, use them as source material and enrich, don't copy verbatim.Co-Authored-By or any AI attribution trailers to commits.recon-agent alias for deep code analysis. If Agent tool is unavailable, fall back to inline work (Glob/Grep/Read). Lightweight Glob/Grep for quick checks is always allowed without delegation.まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
A test skill from an extension
日本語の概要は準備中です。原文の説明を表示しています。
A test skill from an extension (v2)
日本語の概要は準備中です。原文の説明を表示しています。
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/config.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".
日本語の概要は準備中です。原文の説明を表示しています。
Generate the architecture guidelines for a game project. Scans the project structure and tech stack, then produces .unikit/ARCHITECTURE.md describing the folder layout, dependency rules, and how modules communicate. Name a specific pattern or let it auto-detect. Use when the user wants to define or document the project architecture, e.g. "generate architecture", "describe the architecture", "which architecture should I use", "set up project architecture", or mentions module structure, module boundaries, project organization, or dependency rules.
日本語の概要は準備中です。原文の説明を表示しています。
Archive completed plans. Moves finished folder plans from .unikit/code/plans/<folder>/ to .unikit/code/archive/plans/<folder>/, so plan lookup and the plan lists stop offering them; an unfinished plan moves only when the user picks it, and is marked as unfinished. Lists every plan with its created and last-change dates; plans can be picked by number or by date. Never deletes, renames or commits. Use when user says "archive plans", "archive completed", "archive old plans", "clean up plans", or "show archived plans". Not for .unikit/code/PLAN.md or FIX_PLAN.md; to check that a plan is really done use /unikit-verify, to commit the move use /unikit-commit.
日本語の概要は準備中です。原文の説明を表示しています。
Create conventional commit messages for {{engine_name}} projects by analyzing staged changes. Handles engine-specific concerns like companion file pairing, binary assets, and linking the related plan. ALWAYS use this skill when the user asks to commit, save changes, or create a commit. Trigger phrases include "commit", "create commit", "commit this", "save changes", "save my work". Even if the user simply says "commit" or asks you to commit after finishing a task — invoke this skill, do NOT commit manually via git.
日本語の概要は準備中です。原文の説明を表示しています。