[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FZ7N2J73DRCVGTCETDWB69":3,"skill-same:01M6FZ7N2J73DRCVGTCETDWB69":69},{"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":28,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":50,"ownerHtmlUrl":51,"ownerBlogUrl":52,"ownerDescription":53,"updatedAt":54,"install":55,"resources":68},"01M6FZ7N2J73DRCVGTCETDWB69","research-roadmap",null,"Scan research and documentation health, then maintain a priority documentation queue","GeorgeQLe\u002Fagentic-skills","GeorgeQLe","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F21134126?v=4","01M6D2JP418S0VGJGF8M93EC3H","George Le","01M6D2JPBAKYD82TA5FS6HKQ3D",1,"MIT","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Fpacks\u002Fresearch-admin\u002Fcodex\u002Fresearch-roadmap\u002Farchive\u002Fv0.0\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000031","产品经理","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38],"research","roadmap","research roadmap","documentation","planning","health","v0","queue","maintain","scan","2026-11-10 10:12:30",false,"---\nname: research-roadmap\ndescription: Scan research and documentation health, then maintain a priority documentation queue\ntype: planning\nversion: v0.0\n---\n\n## Pack Availability Guard\n\nBefore telling the user to run a skill from another project-local pack, check `.agents\u002Fproject.json.enabled_packs`. If the target pack is not enabled, recommend `$pack install \u003Cpack>` instead of the target skill. Global skills are always valid. Skills from this same pack are valid because the current skill is already running from that pack.\n\n# Research Roadmap - Documentation Queue Manager\n\nInvoke as `$research-roadmap`.\n\nUse this skill to make the project documentation contract complete before build work continues. It scans research, specs, and task docs, then updates `tasks\u002Ftodo.md` with immediately actionable documentation work and uses `tasks\u002Frecord-todo.md` or `tasks\u002Frecurring-todo.md` for non-blocking future documentation records.\n\nDo not run the queued research skills from this skill. The job here is to maintain the documentation queue so the user can complete research and planning artifacts in the right order.\n\n## Process\n\n### 0. Parse Mode Arguments\n\nParse `$ARGUMENTS` for mode flags:\n\n- `--post-prototype`: Post-prototype research refresh mode\n- `--post-spec`: Post-spec research refresh mode\n- No flags: default documentation queue mode (existing behavior)\n\nIf `--post-prototype` is present, skip to the Post-Prototype Process below.\nIf `--post-spec` is present, skip to the Post-Spec Process below.\nOtherwise, continue with the standard process starting at step 1.\n\n### 1. Resolve Project Pack\n\n1. Read `.agents\u002Fproject.json` if it exists.\n2. Use `project_type` and `enabled_packs` to decide which project-pack research skills apply.\n3. If `.agents\u002Fproject.json` is missing, infer the project type from repository signals:\n   - game: game engine files, Steam\u002Fstore assets, playable prototypes, or game-specific README\u002Fspec language\n   - devtool: SDK, CLI, API, library, infra, docs, examples, or package-first developer workflow\n   - business-app: SaaS, marketplace, productivity, workflow, enterprise, or user-facing app\n4. If the project type cannot be inferred, default to `business-app`.\n5. If an expected pack is not installed, add a priority todo for `$pack install \u003Cpack>` before pack-specific research todos.\n\n### 2. Resolve Documentation Roots\n\nTreat top-level `research\u002F`, `specs\u002F`, and `tasks\u002F` as canonical.\n\n1. If a canonical root exists, use it directly.\n2. If a canonical root is missing, search shallowly near the repo root for likely aliases such as `docs\u002F`, `planning\u002F`, `notes\u002F`, or `work\u002F`.\n3. Prefer roots that contain multiple expected documentation files over isolated matches.\n4. If no credible task root exists, create\u002Fupdate top-level `tasks\u002Ftodo.md`; create `tasks\u002Frecord-todo.md` or `tasks\u002Frecurring-todo.md` only when advisory items exist.\n5. If a fallback root is used for research or specs, mention it in the generated todo item reasons.\n\nFor writing the priority queue, prefer `tasks\u002Ftodo.md`. Use a fallback task root only when the project already has a clear existing task contract and no top-level `tasks\u002F` directory. Do not put condition-gated records or recurring obligations into `tasks\u002Ftodo.md` unless they are immediately actionable execution work.\n\n### 3. Discover Research-Producing Skills\n\nBuild the research queue from enabled project packs. Include every enabled research-producing skill whose output is missing or stale, even if its prerequisites are not yet present. When prerequisites are missing, keep the item in the queue but note that it is blocked by earlier documentation items.\n\nPrefer dynamic discovery when skill files are available:\n\n1. Inspect enabled pack skill files under `.codex\u002Fskills\u002F*\u002FSKILL.md` or `packs\u002F\u003Cpack>\u002Fcodex\u002F*\u002FSKILL.md`.\n2. Include skills with `type: research`.\n3. Also include skills whose `## Output` section writes `research\u002F*.md`, `research\u002F{app}\u002F*.md`, `research\u002Fexperiments\u002F*.md`, or dated research files.\n\nIf dynamic discovery is unavailable, use these fallback maps.\n\nBusiness-app research outputs:\n\n| Skill | Output |\n| --- | --- |\n| `$icp` | `research\u002Ficp.md` |\n| `$competitive-analysis` | `research\u002Fcompetitive-analysis.md` |\n| `$positioning` | `research\u002Fpositioning.md` |\n| `$journey-map` | `research\u002Fjourney-map.md` |\n| `$metrics` | `research\u002Fmetrics.md` |\n| `$gtm` | `research\u002Fgtm.md` |\n| `$monetization` | `research\u002Fmonetization.md` |\n| `$landing-copy` | `research\u002Flanding-copy.md` |\n| `$customer-feedback` | `research\u002Fcustomer-feedback.md` |\n| `$assumption-tracker` | `research\u002Fassumption-tracker.md` |\n| `$experiment` | `research\u002Fexperiments\u002F\u003Cexperiment>.md` |\n| `$enterprise-icp` | `research\u002Fenterprise-icp.md` |\n| `$risk-register` | `research\u002Frisk-register.md` |\n| `$burn-rate` | `research\u002Fburn-rate.md` |\n| `$runway-model` | `research\u002Frunway-model.md` |\n| `$cohort-review` | `research\u002Fcohort-review-YYYY-MM-DD.md` |\n| `$retro` | `research\u002Fretro-YYYY-MM-DD.md` |\n| `$investor-update` | `research\u002Finvestor-update-YYYY-MM.md` |\n| `$platform-strategy` | `research\u002Fplatform-strategy.md` |\n| `$mvp-gap` | `research\u002Fmvp-gap.md` |\n\nGame research outputs:\n\n| Skill | Output |\n| --- | --- |\n| `$game-audience` | `research\u002Fgame-audience.md` |\n| `$game-fantasy` | `research\u002Fgame-fantasy.md` |\n| `$game-genre-map` | `research\u002Fgame-genre-map.md` |\n| `$game-comparables` | `research\u002Fgame-comparables.md` |\n| `$game-core-loop` | `research\u002Fgame-core-loop.md` |\n| `$game-prototype-test` | `research\u002Fgame-prototype-test.md` |\n| `$game-playtest-metrics` | `research\u002Fgame-playtest-metrics.md` |\n| `$game-store-page-test` | `research\u002Fgame-store-page-test.md` |\n| `$game-launch` | `research\u002Fgame-launch.md` |\n\nDevtool research outputs:\n\n| Skill | Output |\n| --- | --- |\n| `$devtool-user-map` | `research\u002Fdevtool-user-map.md` |\n| `$devtool-integration-map` | `research\u002Fdevtool-integration-map.md` |\n| `$devtool-dx-journey` | `research\u002Fdevtool-dx-journey.md` |\n| `$devtool-adoption` | `research\u002Fdevtool-adoption.md` |\n| `$devtool-positioning` | `research\u002Fdevtool-positioning.md` |\n| `$devtool-monetization` | `research\u002Fdevtool-monetization.md` |\n| `$devtool-docs-audit` | `research\u002Fdevtool-docs-audit.md` |\n\nAlso include documentation-producing non-research skills when their outputs are missing or stale:\n\n| Skill | Output |\n| --- | --- |\n| `$idea-scope-brief` | `research\u002Fconcept-brief.md` or `research\u002F{app}\u002Fconcept-brief.md` |\n| `$spec-interview` | `specs\u002F*.md` |\n| `$ux-variations` | `specs\u002Fux-variations-*.md` |\n| `$ui-interview` | `specs\u002Fui-*.md` |\n| `$scale-audit` | `specs\u002Fscale-audit.md` |\n| `$roadmap` | `tasks\u002Froadmap.md`, `tasks\u002Ftodo.md` |\n| `$game-roadmap` | `tasks\u002Froadmap.md`, `tasks\u002Ftodo.md` |\n| `$reconcile-research fix all` | `research\u002Freconciliation-report.md` |\n| `$reconcile-dev-docs fix all` | reconciled `tasks\u002F`, `specs\u002F`, and phase archives |\n| `$youtube-audit` | `research\u002Fyoutube-audit-YYYY-MM-DD.md` |\n\n### 4. Scan Documentation State\n\nRecord existence and last-modified timestamps for:\n\n- all discovered research outputs\n- `research\u002Fconcept-brief.md` and app-scoped `research\u002F{app}\u002Fconcept-brief.md` when present\n- `research\u002F*-search-log.md` and `research\u002F*-interview.md` only as supporting context, not primary completion artifacts\n- `specs\u002F*.md` and app-scoped `specs\u002F{app}\u002F*.md`\n- `specs\u002Fux-variations-*.md` and app-scoped `specs\u002F{app}\u002Fux-variations-*.md`\n- `specs\u002Fui-*.md` and app-scoped `specs\u002F{app}\u002Fui-*.md`\n- `tasks\u002Froadmap.md`\n- `tasks\u002Ftodo.md`\n- `tasks\u002Fhistory.md`\n- `tasks\u002Fideas.md`\n- `tasks\u002Fmanual-todo.md`\n- `tasks\u002Frecord-todo.md`\n- `tasks\u002Frecurring-todo.md`\n\nWhen `research\u002F` contains app subdirectories, treat it as monorepo mode. Build a separate documentation queue per app and include app arguments in commands, such as `$icp web`.\n\n### 5. Classify Missing And Stale Items\n\nAn item is missing when its expected output file does not exist.\n\nAn item is stale when a newer upstream document should invalidate or refresh it. Include the exact timestamps in the todo reason. Use these default rules:\n\n| Newer input | Stale target |\n| --- | --- |\n| `research\u002Fconcept-brief.md` or `research\u002F{app}\u002Fconcept-brief.md` | matching `research\u002Ficp.md` or `research\u002F{app}\u002Ficp.md` |\n| `research\u002Fcustomer-feedback.md` | `research\u002Ficp.md`, `research\u002Fjourney-map.md`, `research\u002Fmonetization.md`, `research\u002Flanding-copy.md` |\n| `research\u002Ficp.md` | `research\u002Fcompetitive-analysis.md`, `research\u002Fpositioning.md`, `research\u002Fgtm.md`, `research\u002Fmonetization.md`, `research\u002Flanding-copy.md` |\n| `research\u002Fcompetitive-analysis.md` | `research\u002Fpositioning.md`, `research\u002Fgtm.md`, `research\u002Fmonetization.md`, `research\u002Flanding-copy.md` |\n| `research\u002Fpositioning.md` | `research\u002Fgtm.md`, `research\u002Flanding-copy.md` |\n| `research\u002Fjourney-map.md` | `research\u002Fmetrics.md`, `research\u002Fgtm.md`, `research\u002Fmonetization.md`, `research\u002Flanding-copy.md` |\n| `research\u002Fmetrics.md` | `research\u002Fcohort-review-*.md`, `research\u002Frunway-model.md`, `research\u002Finvestor-update-*.md` |\n| `research\u002Fgtm.md` | `research\u002Fmonetization.md`, `research\u002Frunway-model.md`, `research\u002Finvestor-update-*.md` |\n| `research\u002Fmonetization.md` | `research\u002Fburn-rate.md`, `research\u002Frunway-model.md`, `research\u002Finvestor-update-*.md` |\n| `research\u002Fexperiments\u002F*.md` with results | `research\u002Fassumption-tracker.md` |\n| `research\u002Fcohort-review-*.md` latest | `research\u002Fmetrics.md`, `research\u002Fgtm.md`, `research\u002Fmonetization.md`, `research\u002Finvestor-update-*.md` |\n| `research\u002Fenterprise-icp.md` | `specs\u002Fscale-audit.md` |\n| `research\u002Fjourney-map.md` | `specs\u002F*.md`, `specs\u002Fux-variations-*.md`, `specs\u002Fui-*.md`, `research\u002Fmetrics.md`, `research\u002Fgtm.md`, `research\u002Fmonetization.md`, `research\u002Flanding-copy.md` |\n| any non-UX\u002FUI `specs\u002F*.md` | `specs\u002Fux-variations-*.md`, `specs\u002Fui-*.md`, `tasks\u002Froadmap.md` |\n| `specs\u002Fux-variations-*.md` | `specs\u002Fui-*.md`, `tasks\u002Froadmap.md` |\n| `specs\u002Fui-*.md` | `tasks\u002Froadmap.md` |\n| `research\u002Frunway-model.md` | `tasks\u002Froadmap.md` |\n\nAlso flag potentially stale specs when source code has commits newer than the spec files. Add `$spec-drift fix all` as a priority documentation item when specs are probably behind implementation.\n\nDo not queue a missing `$idea-scope-brief` item for established projects that already have `research\u002Ficp.md`, `research\u002Fcompetitive-analysis.md`, `research\u002Fjourney-map.md`, or `specs\u002F`. Queue it only for idea-only projects where no concept brief or downstream research\u002Fspec artifact exists.\n\n### 6. Order The Priority Queue\n\nOrder immediately actionable todo items so the user can complete documentation without guessing:\n\n1. Pack installation needed for the selected project type.\n2. Stale foundational research.\n3. Missing foundational research.\n4. Stale downstream research.\n5. Missing downstream research.\n6. Missing or stale specs.\n7. Missing or stale UX\u002FUI planning artifacts for user-facing work.\n8. Missing or stale roadmap\u002Ftask docs.\n9. Reconciliation items when conflicting docs are detected.\n\nWithin research items, use this dependency order when relevant. When emitting queued commands for pack-based skills, apply the Pack Availability Guard — if the target skill's pack is not in `.agents\u002Fproject.json` `enabled_packs`, queue `$pack install \u003Cpack>` before the skill:\n\n```\n$idea-scope-brief\n  -> $icp\n  -> $competitive-analysis\n  -> $positioning\n  -> $journey-map\n    -> $spec-interview\n      -> $ux-variations\n        -> $ui-interview\n          -> $prototype\n            -> $consolidate-variations\n              -> $roadmap\n    -> $metrics\n  -> $gtm\n  -> $monetization\n  -> $landing-copy\n3+ research docs -> $assumption-tracker -> $experiment -> $customer-feedback\n$enterprise-icp -> $scale-audit\n$metrics + launch data -> $cohort-review\n$monetization -> $burn-rate -> $runway-model\nquarterly\u002Foutcome data -> $retro\nstakeholder reporting -> $investor-update\nmulti-product expansion -> $platform-strategy\n```\n\nFor game and devtool projects, follow the default pack flow from `docs\u002Fskills-reference.md` when available. Add review or planning skills such as `$devtool-docs-audit` and `$game-roadmap` only when their documented output is missing from the documentation contract.\n\nDefault devtool order:\n\n```\n$devtool-user-map\n  -> $devtool-integration-map\n    -> $devtool-dx-journey\n      -> $devtool-adoption\n        -> $devtool-positioning\n          -> $devtool-monetization\n            -> $devtool-docs-audit\n              -> $research-roadmap\n```\n\n### 6b. Classify Advisory Documentation Work\n\nBefore writing any queue, choose the correct task surface:\n\n- `tasks\u002Ftodo.md`: missing\u002Fstale documentation work that can be performed now with available repo context and normal skill inputs.\n- `tasks\u002Frecord-todo.md`: one-time documentation records or measurements that are blocked on future conditions, production aggregate access, external reports, user-provided data, or launch data, and are not launch gates.\n- `tasks\u002Frecurring-todo.md`: cohort reviews, retros, investor updates, playtest\u002Fadoption checks, docs-health checks, or other documentation jobs that recur on a cadence.\n\nRecord items must include task, source, condition, non-blocking reason, required data\u002Faccess, measurement\u002Fquery, target\u002Facceptance note, revisit cadence\u002Fdate, completion evidence, and promotion rule. Recurring items must include task, cadence, owner\u002Fagent, scope, trigger, last run, next due, command\u002Fskill, evidence\u002Foutput path, and escalation conditions.\n\n### 7. Update `tasks\u002Ftodo.md`\n\nWrite a single top-level section named exactly:\n\n```md\n## Priority Documentation Todo\n```\n\nRules:\n\n1. If `tasks\u002Ftodo.md` does not exist, create it.\n2. If a previous `## Priority Documentation Todo` section exists, replace only that section.\n3. Put the section before existing implementation work. If the file starts with a title or status block, keep that orientation text at the top and insert the priority section immediately after it.\n4. Preserve all other todo content exactly unless it is inside the old priority section.\n5. Do not mark existing implementation tasks complete.\n6. Do not remove unrelated todo sections.\n7. Use unchecked boxes only for missing\u002Fstale documentation work that is immediately actionable.\n8. Use checked boxes only when an item is already current.\n\nTodo item format:\n\n```md\n- [ ] `$skill [optional-app-or-argument]` - create\u002Fupdate `path\u002Fto\u002Foutput.md` because [missing\u002Fstale reason with evidence].\n```\n\nIf prerequisites are missing:\n\n```md\n- [ ] `$metrics` - create\u002Fupdate `research\u002Fmetrics.md` after `$journey-map`; currently blocked because `research\u002Fjourney-map.md` is missing.\n```\n\nDo not write unavailable-data or cadence-gated items here. Write those to `tasks\u002Frecord-todo.md` or `tasks\u002Frecurring-todo.md` instead.\n\n### 7b. Update `tasks\u002Frecord-todo.md`\n\nWhen non-blocking condition-gated documentation records exist, append or replace a `## Documentation Records` section in `tasks\u002Frecord-todo.md`. Preserve all other sections exactly.\n\nUse this item format:\n\n```md\n- [ ] [record task]\n  - Source: [skill\u002Fspec\u002Fphase\u002Fcriterion]\n  - Condition: [future condition or required access]\n  - Non-blocking reason: [why this does not block launch or current execution]\n  - Required data\u002Faccess: [data, aggregate, portal, credential, or user-provided output]\n  - Measurement\u002Fquery: [how to produce the record]\n  - Target\u002Facceptance note: [threshold or expected note]\n  - Revisit: [date or cadence]\n  - Completion evidence: [research path, history entry, or report path]\n  - Promotion rule: [when to move into `tasks\u002Ftodo.md`]\n```\n\n### 7c. Update `tasks\u002Frecurring-todo.md`\n\nWhen recurring documentation work exists, append or replace a `## Documentation Recurring Work` section in `tasks\u002Frecurring-todo.md`. Preserve all other sections exactly.\n\nUse this item format:\n\n```md\n- [ ] [recurring task]\n  - Cadence: [daily\u002Fweekly\u002Fmonthly\u002Fquarterly\u002Fon release\u002Fetc.]\n  - Owner\u002Fagent: [$skill or responsible role]\n  - Scope: [project\u002Fapp\u002Farea]\n  - Trigger: [time, release, data threshold, user request]\n  - Last run: [date or never]\n  - Next due: [date or rule]\n  - Command\u002Fskill: [$skill args]\n  - Evidence\u002Foutput path: [research\u002Freport path]\n  - Escalation conditions: [when this becomes executable or blocking]\n```\n\nIf all documentation is current:\n\n```md\n- [x] Documentation is current; no missing or stale research, spec, roadmap, or task artifacts found.\n```\n\n### 8. Output To User\n\nAfter editing, summarize:\n\n```\n## Research Roadmap Updated\n\n- Wrote\u002Fupdated `tasks\u002Ftodo.md` and any needed advisory task files\n- Priority documentation items: N\n- Stale items: N\n- Missing items: N\n- Blocked-by-prerequisite items: N\n- Record items: N\n- Recurring items: N\n\nNext: start at the first unchecked item in `tasks\u002Ftodo.md`; review advisory task files separately. If there are no unchecked priority documentation items and no promotable advisory items, route to `$brainstorm` for candidate next-phase discovery unless the latest user request explicitly asks to pause, park, archive, or wait.\n```\n\nIf fallback discovery was used, include a short note naming the inferred roots.\n\n## Next-Step Routing\n\nBefore handing back, identify the next concrete documentation, planning, or discovery route from project state.\n\nOutput exactly two lines beyond the normal report:\n\n- **Next work:** \u003Cspecific documentation task, promotable advisory review, discovery task, or explicit parked state>\n- **Recommended next command:** \u003Cone command or route>\n\nRules:\n\n- Recommend the first unchecked `## Priority Documentation Todo` item when one exists.\n- If a record or recurring item appears promotable to concrete execution work, recommend reviewing or promoting that item rather than discovery.\n- Do not emit `Recommended next command: none` unless the latest user request explicitly asks to pause, park, archive, or wait.\n- If documentation is current and no advisory item is promotable, route to new-phase discovery: `**Next work:** discover candidate next phase or explicitly park the project` and `**Recommended next command:** $brainstorm`.\n- Use `$feature-interview` instead of `$brainstorm` when the project already has a concrete unspecced idea selected but still needs planning-destination triage. Use `$spec-interview` only when full-spec creation is already confirmed.\n\n## Post-Prototype Process (`--post-prototype`)\n\n### Gate\n\nA consolidated prototype must exist at `prototypes\u002F{topic}\u002Fconsolidated\u002F`. If missing, halt and recommend `$consolidate-variations` first.\n\n### Scan\n\n1. Read the consolidated prototype directory to understand what was built.\n2. Read all research docs: `research\u002Fconcept-brief.md`, `research\u002Ficp.md`, `research\u002Fcompetitive-analysis.md`, `research\u002Fjourney-map.md`, and any other `research\u002F*.md` files.\n3. For each research document, compare against the consolidated prototype:\n   - **User flows**: Does the prototype's flow match the journey map's discovery -> onboarding -> aha -> conversion -> retention path?\n   - **Onboarding**: Does the prototype's first-run experience match ICP expectations for technical sophistication and time-to-value?\n   - **Density and copy**: Does the prototype's information density and copy tone match ICP communication preferences?\n   - **Interactions**: Do the prototype's interaction patterns match journey-map touchpoints and competitive differentiation?\n   - **Differentiation**: Does the prototype demonstrate the competitive advantages identified in competitive analysis?\n4. Flag research documents that are contradicted or made stale by prototype decisions.\n\n### Output\n\nPopulate `tasks\u002Ftodo.md` `## Priority Documentation Todo` with research skills that need re-running, using the same format as the standard process. Each item must explain what the prototype revealed that contradicts or supersedes the current research document.\n\n**Next step:** first unchecked queued item in `tasks\u002Ftodo.md`.\n\n## Post-Spec Process (`--post-spec`)\n\n### Gate\n\nA production spec must exist at `specs\u002F{topic}.md`. If missing, halt and recommend `$spec-interview` first.\n\n### Scan\n\n1. Read the production spec to understand implementation constraints.\n2. Read all research docs.\n3. For each research document, compare against spec constraints:\n   - **Auth model**: Does the research assume an auth model that the spec changed?\n   - **Data model**: Does the research assume data structures that the spec redesigned?\n   - **Performance**: Does the research assume performance characteristics that the spec's architecture contradicts?\n   - **Deployment**: Does the research assume a deployment model that the spec changed?\n4. Flag research documents that are invalidated by spec constraints.\n\n### Output\n\nPopulate `tasks\u002Ftodo.md` `## Priority Documentation Todo` with research skills that need re-running. Each item must explain what spec constraint invalidates the current research document.\n\n**Next step:** first unchecked queued item in `tasks\u002Ftodo.md`.\n\n## Constraints\n\n- This skill updates `tasks\u002Ftodo.md`, `tasks\u002Frecord-todo.md`, and `tasks\u002Frecurring-todo.md`; it must not run the queued skills.\n- Preserve user-authored todo content outside `## Priority Documentation Todo`.\n- Preserve user-authored record\u002Frecurring content outside `## Documentation Records` and `## Documentation Recurring Work`.\n- Every stale item must include timestamp evidence.\n- Every enabled research-producing skill must be represented unless its output is present and fresh.\n- Prefer canonical `research\u002F`, `specs\u002F`, and `tasks\u002F` paths over aliases.\n- In monorepo mode, include app-scoped commands and output paths.\n- Do not put condition-gated measurements, future validation records, or cadence-based research jobs into `tasks\u002Ftodo.md` unless they are immediately executable.\n- Do not create or modify source code.\n\n## Alignment Page\n\nWhen this skill produces durable deliverables (research, specs, plans, reports, prototypes, or any document output), build a full-depth HTML alignment page at `alignment\u002Fresearch-roadmap-{topic}.html`. Use a normalized topic slug derived from the app, feature, research subject, report subject, or output filename.\n\n**Full content requirement.** The alignment page must contain the complete content of every proposed markdown deliverable -- every section, every finding, every detail, every list item. It is a thorough interactive review document, not a summary. Render the full deliverable content in clean, readable HTML with appropriate hierarchy, styling, and navigation. If the skill writes multiple scoped deliverables in one run, build one alignment page that contains all deliverables with anchor-linked navigation. Durable tracker artifacts, such as `research\u002Fassumption-tracker.md`, remain canonical markdown outputs but must also be fully rendered into the alignment page before approval.\n\n**Dark-mode styling.** Use a dark color scheme by default. Base CSS variables: `--bg: #0d1117; --surface: #161b22; --border: #30363d; --text: #c9d1d9; --text-muted: #8b949e; --accent: #58a6ff; --green: #3fb950; --red: #f85149; --orange: #d29922; --purple: #bc8cff;`. Apply `background: var(--bg); color: var(--text);` on body. Use `--surface` for cards, nav, and table headers. Use `--border` for all borders. Use `--purple` for question blocks and gate headings. Use `--accent` for links and section headings. Keep headings `color: #fff` or `var(--accent)` for hierarchy. Question block backgrounds should use `#1c2333`.\n\n**Alignment gates.** Treat gates as explicit review sections inside the HTML page. A gate blocks finalization until its required inline questions are answered and compiled into YAML. Include every gate that applies to the skill output, and include these gate types whenever relevant: evidence coverage, assumptions\u002Fconfidence, scope\u002Fnon-goals, candidate\u002Fverdict decisions, artifact destination, proposed file changes, coverage checkpoint, and post-approval route.\n\n**Report-only research gates.** For report-only or pre-approval research skills, the alignment page must explicitly contain evidence coverage, assumptions\u002Fconfidence, recommended path, proposed file changes, and approval gates before any canonical research, spec, or task file is created or updated.\n\n\n**Required inline questions.** Each gate must contain at least one required inline question placed directly under the content it governs, inside a visually distinct question block. Each question must use radio-button inputs and include two standing options after the skill-generated choices: \"Other \u002F None of the above\" backed by a multi-line text box for free-form input, and \"Need clarification\" backed by an optional notes box where the user can explain what is unclear. When any radio option other than \"Other\" or \"Need clarification\" is selected, show an optional \"Additional notes\" text box beneath it so the user can qualify their choice. Generate questions based on what genuinely needs user input -- do not add filler questions. Do not create a separate bottom \"Decisions & Clarifications\" section.\n\n**Gate YAML contract.** At the bottom of the page, include a \"Compile Answers\" button that aggregates answers from all inline gate questions throughout the page, including free-text notes. The button remains disabled until every required question has a selection, shows a count of remaining unanswered questions, and scrolls to the first unanswered question if clicked early. When every question is answered, generate a structured YAML block with one item per gate answer using this stable shape: `section`, `gate_type`, `status` (`answered`, `other`, or `needs-clarification`), `answer`, optional `notes`, and optional `target_artifact` or `target_path` when the gate controls file output. After successful compilation, automatically attempt to copy the YAML to the clipboard with the Clipboard API, display copy status, and display the YAML in a read-only textarea with an explicit \"Copy YAML\" button. The copy button must retry clipboard copy when supported and fall back to selecting the textarea contents when clipboard access is unavailable or blocked.\n\n**Pre-approval stop.** Before user approval, the next action is review of the HTML alignment page, not downstream routing. Ask the user to review the page and provide the compiled YAML answers. Do not include `Recommended next skill`, `Recommended next command`, or downstream routing language until after compiled YAML has been provided and the approved artifacts have been written or updated.\n\n**Diff highlighting on updates.** When the agent updates an existing alignment page after receiving compiled answers, highlight what changed since the previous version. The agent chooses inline annotation or side-by-side layout per situation.\n\n**Archiving.** Before replacing an existing alignment page, archive it to `docs\u002Fhistory\u002Farchive\u002FYYYY-MM-DD\u002FHHMMSS\u002Falignment\u002Fresearch-roadmap-{topic}.html`.\n\n**Browser open.** Attempt to open the resulting HTML page in the browser and report whether the open succeeded or was blocked. A blocked browser-open attempt does not make the skill fail when the files were written correctly.\n\n## Archive-First Replacement Policy\n\n- Before replacing or substantively rewriting an existing canonical research\u002Fspec document (`research\u002F**\u002F*.md`, `specs\u002F**\u002F*.md`, or `docs\u002Fspecifications\u002F**\u002F*.md`), copy the current file to `docs\u002Fhistory\u002Farchive\u002FYYYY-MM-DD\u002FHHMMSS\u002F\u003Coriginal-relative-path>`.\n- Preserve the archived snapshot exactly as it existed before the change; do not edit the archived copy after creating it.\n- After the archive snapshot exists, write the updated document to the original canonical path.\n- Report both the archive path and the updated canonical path in the final output.\n- New files do not need archive snapshots. Append-only updates do not need archive snapshots unless an existing section is regenerated or rewritten.\n- Keep any existing user approval requirement before overwriting or replacing a document; archiving does not replace asking when the skill already requires approval.\n\n## Default Shipping Contract\n\n- **Default next-step routing:** when reporting completion, include either `Recommended next skill: \u003Ccommand>` or the two-line pair `**Next work:** \u003Cspecific task, discovery task, blocker, or explicit parked state>` and `**Recommended next command:** \u003Cone command or route>` so the next operator has a concrete handoff. Do not use `none` as the command unless the user explicitly asked to pause, park, archive, or wait; exhausted queues route to `$brainstorm`.\n- If this skill creates or modifies tracked repository files, finish by committing and pushing all intended changes to the repository primary branch (`main` when present, otherwise `master`) before stopping, even if the user did not explicitly ask for commit\u002Fpush.\n- Do not leave tracked changes or unpushed commits behind. If unrelated tracked work is already present, either include it in sensible commits too or stop and explain the blocker.\n- This contract does not override stricter safety rules about secrets, destructive history changes, release publication\u002Ftag confirmation, or production deploy confirmation.\n","## Pack Availability Guard\n\nBefore telling the user to run a skill from another project-local pack, check `.agents\u002Fproject.json.enabled_packs`. If the target pack is not enabled, recommend `$pack install \u003Cpack>` instead of the target skill. Global skills are always valid. Skills from this same pack are valid because the current skill is already running from that pack.\n\n# Research Roadmap - Documentation Queue Manager\n\nInvoke as `$research-roadmap`.\n\nUse this skill to make the project documentation contract complete before build work continues. It scans research, specs, and task docs, then updates `tasks\u002Ftodo.md` with immediately actionable documentation work and uses `tasks\u002Frecord-todo.md` or `tasks\u002Frecurring-todo.md` for non-blocking future documentation records.\n\nDo not run the queued research skills from this skill. The job here is to maintain the documentation queue so the user can complete research and planning artifacts in the right order.\n\n## Process\n\n### 0. Parse Mode Arguments\n\nParse `$ARGUMENTS` for mode flags:\n\n- `--post-prototype`: Post-prototype research refresh mode\n- `--post-spec`: Post-spec research refresh mode\n- No flags: default documentation queue mode (existing behavior)\n\nIf `--post-prototype` is present, skip to the Post-Prototype Process below.\nIf `--post-spec` is present, skip to the Post-Spec Process below.\nOtherwise, continue with the standard process starting at step 1.\n\n### 1. Resolve Project Pack\n\n1. Read `.agents\u002Fproject.json` if it exists.\n2. Use `project_type` and `enabled_packs` to decide which project-pack research skills apply.\n3. If `.agents\u002Fproject.json` is missing, infer the project type from repository signals:\n   - game: game engine files, Steam\u002Fstore assets, playable prototypes, or game-specific README\u002Fspec language\n   - devtool: SDK, CLI, API, library, infra, docs, examples, or package-first developer workflow\n   - business-app: SaaS, marketplace, productivity, workflow, enterprise, or user-facing app\n4. If the project type cannot be inferred, default to `business-app`.\n5. If an expected pack is not installed, add a priority todo for `$pack install \u003Cpack>` before pack-specific research todos.\n\n### 2. Resolve Documentation Roots\n\nTreat top-level `research\u002F`, `specs\u002F`, and `tasks\u002F` as canonical.\n\n1. If a canonical root exists, use it directly.\n2. If a canonical root is missing, search shallowly near the repo root for likely aliases such as `docs\u002F`, `planning\u002F`, `notes\u002F`, or `work\u002F`.\n3. Prefer roots that contain multiple expected documentation files over isolated matches.\n4. If no credible task root exists, create\u002Fupdate top-level `tasks\u002Ftodo.md`; create `tasks\u002Frecord-todo.md` or `tasks\u002Frecurring-todo.md` only when advisory items exist.\n5. If a fallback root is used for research or specs, mention it in the generated todo item reasons.\n\nFor writing the priority queue, prefer `tasks\u002Ftodo.md`. Use a fallback task root only when the project already has a clear existing task contract and no top-level `tasks\u002F` directory. Do not put condition-gated records or recurring obligations into `tasks\u002Ftodo.md` unless they are immediately actionable execution work.\n\n### 3. Discover Research-Producing Skills\n\nBuild the research queue from enabled project packs. Include every enabled research-producing skill whose output is missing or stale, even if its prerequisites are not yet present. When prerequisites are missing, keep the item in the queue but note that it is blocked by earlier documentation items.\n\nPrefer dynamic discovery when skill files are available:\n\n1. Inspect enabled pack skill files under `.codex\u002Fskills\u002F*\u002FSKILL.md` or `packs\u002F\u003Cpack>\u002Fcodex\u002F*\u002FSKILL.md`.\n2. Include skills with `type: research`.\n3. Also include skills whose `## Output` section writes `research\u002F*.md`, `research\u002F{app}\u002F*.md`, `research\u002Fexperiments\u002F*.md`, or dated research files.\n\nIf dynamic discovery is unavailable, use these fallback maps.\n\nBusiness-app research outputs:\n\n| Skill | Output |\n| --- | --- |\n| `$icp` | `research\u002Ficp.md` |\n| `$competitive-analysis` | `research\u002Fcompetitive-analysis.md` |\n| `$positioning` | `research\u002Fpositioning.md` |\n| `$journey-map` | `research\u002Fjourney-map.md` |\n| `$metrics` | `research\u002Fmetrics.md` |\n| `$gtm` | `research\u002Fgtm.md` |\n| `$monetization` | `research\u002Fmonetization.md` |\n| `$landing-copy` | `research\u002Flanding-copy.md` |\n| `$customer-feedback` | `research\u002Fcustomer-feedback.md` |\n| `$assumption-tracker` | `research\u002Fassumption-tracker.md` |\n| `$experiment` | `research\u002Fexperiments\u002F\u003Cexperiment>.md` |\n| `$enterprise-icp` | `research\u002Fenterprise-icp.md` |\n| `$risk-register` | `research\u002Frisk-register.md` |\n| `$burn-rate` | `research\u002Fburn-rate.md` |\n| `$runway-model` | `research\u002Frunway-model.md` |\n| `$cohort-review` | `research\u002Fcohort-review-YYYY-MM-DD.md` |\n| `$retro` | `research\u002Fretro-YYYY-MM-DD.md` |\n| `$investor-update` | `research\u002Finvestor-update-YYYY-MM.md` |\n| `$platform-strategy` | `research\u002Fplatform-strategy.md` |\n| `$mvp-gap` | `research\u002Fmvp-gap.md` |\n\nGame research outputs:\n\n| Skill | Output |\n| --- | --- |\n| `$game-audience` | `research\u002Fgame-audience.md` |\n| `$game-fantasy` | `research\u002Fgame-fantasy.md` |\n| `$game-genre-map` | `research\u002Fgame-genre-map.md` |\n| `$game-comparables` | `research\u002Fgame-comparables.md` |\n| `$game-core-loop` | `research\u002Fgame-core-loop.md` |\n| `$game-prototype-test` | `research\u002Fgame-prototype-test.md` |\n| `$game-playtest-metrics` | `research\u002Fgame-playtest-metrics.md` |\n| `$game-store-page-test` | `research\u002Fgame-store-page-test.md` |\n| `$game-launch` | `research\u002Fgame-launch.md` |\n\nDevtool research outputs:\n\n| Skill | Output |\n| --- | --- |\n| `$devtool-user-map` | `research\u002Fdevtool-user-map.md` |\n| `$devtool-integration-map` | `research\u002Fdevtool-integration-map.md` |\n| `$devtool-dx-journey` | `research\u002Fdevtool-dx-journey.md` |\n| `$devtool-adoption` | `research\u002Fdevtool-adoption.md` |\n| `$devtool-positioning` | `research\u002Fdevtool-positioning.md` |\n| `$devtool-monetization` | `research\u002Fdevtool-monetization.md` |\n| `$devtool-docs-audit` | `research\u002Fdevtool-docs-audit.md` |\n\nAlso include documentation-producing non-research skills when their outputs are missing or stale:\n\n| Skill | Output |\n| --- | --- |\n| `$idea-scope-brief` | `research\u002Fconcept-brief.md` or `research\u002F{app}\u002Fconcept-brief.md` |\n| `$spec-interview` | `specs\u002F*.md` |\n| `$ux-variations` | `specs\u002Fux-variations-*.md` |\n| `$ui-interview` | `specs\u002Fui-*.md` |\n| `$scale-audit` | `specs\u002Fscale-audit.md` |\n| `$roadmap` | `tasks\u002Froadmap.md`, `tasks\u002Ftodo.md` |\n| `$game-roadmap` | `tasks\u002Froadmap.md`, `tasks\u002Ftodo.md` |\n| `$reconcile-research fix all` | `research\u002Freconciliation-report.md` |\n| `$reconcile-dev-docs fix all` | reconciled `tasks\u002F`, `specs\u002F`, and phase archives |\n| `$youtube-audit` | `research\u002Fyoutube-audit-YYYY-MM-DD.md` |\n\n### 4. Scan Documentation State\n\nRecord existence and last-modified timestamps for:\n\n- all discovered research outputs\n- `research\u002Fconcept-brief.md` and app-scoped `research\u002F{app}\u002Fconcept-brief.md` when present\n- `research\u002F*-search-log.md` and `research\u002F*-interview.md` only as supporting context, not primary completion artifacts\n- `specs\u002F*.md` and app-scoped `specs\u002F{app}\u002F*.md`\n- `specs\u002Fux-variations-*.md` and app-scoped `specs\u002F{app}\u002Fux-variations-*.md`\n- `specs\u002Fui-*.md` and app-scoped `specs\u002F{app}\u002Fui-*.md`\n- `tasks\u002Froadmap.md`\n- `tasks\u002Ftodo.md`\n- `tasks\u002Fhistory.md`\n- `tasks\u002Fideas.md`\n- `tasks\u002Fmanual-todo.md`\n- `tasks\u002Frecord-todo.md`\n- `tasks\u002Frecurring-todo.md`\n\nWhen `research\u002F` contains app subdirectories, treat it as monorepo mode. Build a separate documentation queue per app and include app arguments in commands, such as `$icp web`.\n\n### 5. Classify Missing And Stale Items\n\nAn item is missing when its expected output file does not exist.\n\nAn item is stale when a newer upstream document should invalidate or refresh it. Include the exact timestamps in the todo reason. Use these default rules:\n\n| Newer input | Stale target |\n| --- | --- |\n| `research\u002Fconcept-brief.md` or `research\u002F{app}\u002Fconcept-brief.md` | matching `research\u002Ficp.md` or `research\u002F{app}\u002Ficp.md` |\n| `research\u002Fcustomer-feedback.md` | `research\u002Ficp.md`, `research\u002Fjourney-map.md`, `research\u002Fmonetization.md`, `research\u002Flanding-copy.md` |\n| `research\u002Ficp.md` | `research\u002Fcompetitive-analysis.md`, `research\u002Fpositioning.md`, `research\u002Fgtm.md`, `research\u002Fmonetization.md`, `research\u002Flanding-copy.md` |\n| `research\u002Fcompetitive-analysis.md` | `research\u002Fpositioning.md`, `research\u002Fgtm.md`, `research\u002Fmonetization.md`, `research\u002Flanding-copy.md` |\n| `research\u002Fpositioning.md` | `research\u002Fgtm.md`, `research\u002Flanding-copy.md` |\n| `research\u002Fjourney-map.md` | `research\u002Fmetrics.md`, `research\u002Fgtm.md`, `research\u002Fmonetization.md`, `research\u002Flanding-copy.md` |\n| `research\u002Fmetrics.md` | `research\u002Fcohort-review-*.md`, `research\u002Frunway-model.md`, `research\u002Finvestor-update-*.md` |\n| `research\u002Fgtm.md` | `research\u002Fmonetization.md`, `research\u002Frunway-model.md`, `research\u002Finvestor-update-*.md` |\n| `research\u002Fmonetization.md` | `research\u002Fburn-rate.md`, `research\u002Frunway-model.md`, `research\u002Finvestor-update-*.md` |\n| `research\u002Fexperiments\u002F*.md` with results | `research\u002Fassumption-tracker.md` |\n| `research\u002Fcohort-review-*.md` latest | `research\u002Fmetrics.md`, `research\u002Fgtm.md`, `research\u002Fmonetization.md`, `research\u002Finvestor-update-*.md` |\n| `research\u002Fenterprise-icp.md` | `specs\u002Fscale-audit.md` |\n| `research\u002Fjourney-map.md` | `specs\u002F*.md`, `specs\u002Fux-variations-*.md`, `specs\u002Fui-*.md`, `research\u002Fmetrics.md`, `research\u002Fgtm.md`, `research\u002Fmonetization.md`, `research\u002Flanding-copy.md` |\n| any non-UX\u002FUI `specs\u002F*.md` | `specs\u002Fux-variations-*.md`, `specs\u002Fui-*.md`, `tasks\u002Froadmap.md` |\n| `specs\u002Fux-variations-*.md` | `specs\u002Fui-*.md`, `tasks\u002Froadmap.md` |\n| `specs\u002Fui-*.md` | `tasks\u002Froadmap.md` |\n| `research\u002Frunway-model.md` | `tasks\u002Froadmap.md` |\n\nAlso flag potentially stale specs when source code has commits newer than the spec files. Add `$spec-drift fix all` as a priority documentation item when specs are probably behind implementation.\n\nDo not queue a missing `$idea-scope-brief` item for established projects that already have `research\u002Ficp.md`, `research\u002Fcompetitive-analysis.md`, `research\u002Fjourney-map.md`, or `specs\u002F`. Queue it only for idea-only projects where no concept brief or downstream research\u002Fspec artifact exists.\n\n### 6. Order The Priority Queue\n\nOrder immediately actionable todo items so the user can complete documentation without guessing:\n\n1. Pack installation needed for the selected project type.\n2. Stale foundational research.\n3. Missing foundational research.\n4. Stale downstream research.\n5. Missing downstream research.\n6. Missing or stale specs.\n7. Missing or stale UX\u002FUI planning artifacts for user-facing work.\n8. Missing or stale roadmap\u002Ftask docs.\n9. Reconciliation items when conflicting docs are detected.\n\nWithin research items, use this dependency order when relevant. When emitting queued commands for pack-based skills, apply the Pack Availability Guard — if the target skill's pack is not in `.agents\u002Fproject.json` `enabled_packs`, queue `$pack install \u003Cpack>` before the skill:\n\n```\n$idea-scope-brief\n  -> $icp\n  -> $competitive-analysis\n  -> $positioning\n  -> $journey-map\n    -> $spec-interview\n      -> $ux-variations\n        -> $ui-interview\n          -> $prototype\n            -> $consolidate-variations\n              -> $roadmap\n    -> $metrics\n  -> $gtm\n  -> $monetization\n  -> $landing-copy\n3+ research docs -> $assumption-tracker -> $experiment -> $customer-feedback\n$enterprise-icp -> $scale-audit\n$metrics + launch data -> $cohort-review\n$monetization -> $burn-rate -> $runway-model\nquarterly\u002Foutcome data -> $retro\nstakeholder reporting -> $investor-update\nmulti-product expansion -> $platform-strategy\n```\n\nFor game and devtool projects, follow the default pack flow from `docs\u002Fskills-reference.md` when available. Add review or planning skills such as `$devtool-docs-audit` and `$game-roadmap` only when their documented output is missing from the documentation contract.\n\nDefault devtool order:\n\n```\n$devtool-user-map\n  -> $devtool-integration-map\n    -> $devtool-dx-journey\n      -> $devtool-adoption\n        -> $devtool-positioning\n          -> $devtool-monetization\n            -> $devtool-docs-audit\n              -> $research-roadmap\n```\n\n### 6b. Classify Advisory Documentation Work\n\nBefore writing any queue, choose the correct task surface:\n\n- `tasks\u002Ftodo.md`: missing\u002Fstale documentation work that can be performed now with available repo context and normal skill inputs.\n- `tasks\u002Frecord-todo.md`: one-time documentation records or measurements that are blocked on future conditions, production aggregate access, external reports, user-provided data, or launch data, and are not launch gates.\n- `tasks\u002Frecurring-todo.md`: cohort reviews, retros, investor updates, playtest\u002Fadoption checks, docs-health checks, or other documentation jobs that recur on a cadence.\n\nRecord items must include task, source, condition, non-blocking reason, required data\u002Faccess, measurement\u002Fquery, target\u002Facceptance note, revisit cadence\u002Fdate, completion evidence, and promotion rule. Recurring items must include task, cadence, owner\u002Fagent, scope, trigger, last run, next due, command\u002Fskill, evidence\u002Foutput path, and escalation conditions.\n\n### 7. Update `tasks\u002Ftodo.md`\n\nWrite a single top-level section named exactly:\n\n```md\n## Priority Documentation Todo\n```\n\nRules:\n\n1. If `tasks\u002Ftodo.md` does not exist, create it.\n2. If a previous `## Priority Documentation Todo` section exists, replace only that section.\n3. Put the section before existing implementation work. If the file starts with a title or status block, keep that orientation text at the top and insert the priority section immediately after it.\n4. Preserve all other todo content exactly unless it is inside the old priority section.\n5. Do not mark existing implementation tasks complete.\n6. Do not remove unrelated todo sections.\n7. Use unchecked boxes only for missing\u002Fstale documentation work that is immediately actionable.\n8. Use checked boxes only when an item is already current.\n\nTodo item format:\n\n```md\n- [ ] `$skill [optional-app-or-argument]` - create\u002Fupdate `path\u002Fto\u002Foutput.md` because [missing\u002Fstale reason with evidence].\n```\n\nIf prerequisites are missing:\n\n```md\n- [ ] `$metrics` - create\u002Fupdate `research\u002Fmetrics.md` after `$journey-map`; currently blocked because `research\u002Fjourney-map.md` is missing.\n```\n\nDo not write unavailable-data or cadence-gated items here. Write those to `tasks\u002Frecord-todo.md` or `tasks\u002Frecurring-todo.md` instead.\n\n### 7b. Update `tasks\u002Frecord-todo.md`\n\nWhen non-blocking condition-gated documentation records exist, append or replace a `## Documentation Records` section in `tasks\u002Frecord-todo.md`. Preserve all other sections exactly.\n\nUse this item format:\n\n```md\n- [ ] [record task]\n  - Source: [skill\u002Fspec\u002Fphase\u002Fcriterion]\n  - Condition: [future condition or required access]\n  - Non-blocking reason: [why this does not block launch or current execution]\n  - Required data\u002Faccess: [data, aggregate, portal, credential, or user-provided output]\n  - Measurement\u002Fquery: [how to produce the record]\n  - Target\u002Facceptance note: [threshold or expected note]\n  - Revisit: [date or cadence]\n  - Completion evidence: [research path, history entry, or report path]\n  - Promotion rule: [when to move into `tasks\u002Ftodo.md`]\n```\n\n### 7c. Update `tasks\u002Frecurring-todo.md`\n\nWhen recurring documentation work exists, append or replace a `## Documentation Recurring Work` section in `tasks\u002Frecurring-todo.md`. Preserve all other sections exactly.\n\nUse this item format:\n\n```md\n- [ ] [recurring task]\n  - Cadence: [daily\u002Fweekly\u002Fmonthly\u002Fquarterly\u002Fon release\u002Fetc.]\n  - Owner\u002Fagent: [$skill or responsible role]\n  - Scope: [project\u002Fapp\u002Farea]\n  - Trigger: [time, release, data threshold, user request]\n  - Last run: [date or never]\n  - Next due: [date or rule]\n  - Command\u002Fskill: [$skill args]\n  - Evidence\u002Foutput path: [research\u002Freport path]\n  - Escalation conditions: [when this becomes executable or blocking]\n```\n\nIf all documentation is current:\n\n```md\n- [x] Documentation is current; no missing or stale research, spec, roadmap, or task artifacts found.\n```\n\n### 8. Output To User\n\nAfter editing, summarize:\n\n```\n## Research Roadmap Updated\n\n- Wrote\u002Fupdated `tasks\u002Ftodo.md` and any needed advisory task files\n- Priority documentation items: N\n- Stale items: N\n- Missing items: N\n- Blocked-by-prerequisite items: N\n- Record items: N\n- Recurring items: N\n\nNext: start at the first unchecked item in `tasks\u002Ftodo.md`; review advisory task files separately. If there are no unchecked priority documentation items and no promotable advisory items, route to `$brainstorm` for candidate next-phase discovery unless the latest user request explicitly asks to pause, park, archive, or wait.\n```\n\nIf fallback discovery was used, include a short note naming the inferred roots.\n\n## Next-Step Routing\n\nBefore handing back, identify the next concrete documentation, planning, or discovery route from project state.\n\nOutput exactly two lines beyond the normal report:\n\n- **Next work:** \u003Cspecific documentation task, promotable advisory review, discovery task, or explicit parked state>\n- **Recommended next command:** \u003Cone command or route>\n\nRules:\n\n- Recommend the first unchecked `## Priority Documentation Todo` item when one exists.\n- If a record or recurring item appears promotable to concrete execution work, recommend reviewing or promoting that item rather than discovery.\n- Do not emit `Recommended next command: none` unless the latest user request explicitly asks to pause, park, archive, or wait.\n- If documentation is current and no advisory item is promotable, route to new-phase discovery: `**Next work:** discover candidate next phase or explicitly park the project` and `**Recommended next command:** $brainstorm`.\n- Use `$feature-interview` instead of `$brainstorm` when the project already has a concrete unspecced idea selected but still needs planning-destination triage. Use `$spec-interview` only when full-spec creation is already confirmed.\n\n## Post-Prototype Process (`--post-prototype`)\n\n### Gate\n\nA consolidated prototype must exist at `prototypes\u002F{topic}\u002Fconsolidated\u002F`. If missing, halt and recommend `$consolidate-variations` first.\n\n### Scan\n\n1. Read the consolidated prototype directory to understand what was built.\n2. Read all research docs: `research\u002Fconcept-brief.md`, `research\u002Ficp.md`, `research\u002Fcompetitive-analysis.md`, `research\u002Fjourney-map.md`, and any other `research\u002F*.md` files.\n3. For each research document, compare against the consolidated prototype:\n   - **User flows**: Does the prototype's flow match the journey map's discovery -> onboarding -> aha -> conversion -> retention path?\n   - **Onboarding**: Does the prototype's first-run experience match ICP expectations for technical sophistication and time-to-value?\n   - **Density and copy**: Does the prototype's information density and copy tone match ICP communication preferences?\n   - **Interactions**: Do the prototype's interaction patterns match journey-map touchpoints and competitive differentiation?\n   - **Differentiation**: Does the prototype demonstrate the competitive advantages identified in competitive analysis?\n4. Flag research documents that are contradicted or made stale by prototype decisions.\n\n### Output\n\nPopulate `tasks\u002Ftodo.md` `## Priority Documentation Todo` with research skills that need re-running, using the same format as the standard process. Each item must explain what the prototype revealed that contradicts or supersedes the current research document.\n\n**Next step:** first unchecked queued item in `tasks\u002Ftodo.md`.\n\n## Post-Spec Process (`--post-spec`)\n\n### Gate\n\nA production spec must exist at `specs\u002F{topic}.md`. If missing, halt and recommend `$spec-interview` first.\n\n### Scan\n\n1. Read the production spec to understand implementation constraints.\n2. Read all research docs.\n3. For each research document, compare against spec constraints:\n   - **Auth model**: Does the research assume an auth model that the spec changed?\n   - **Data model**: Does the research assume data structures that the spec redesigned?\n   - **Performance**: Does the research assume performance characteristics that the spec's architecture contradicts?\n   - **Deployment**: Does the research assume a deployment model that the spec changed?\n4. Flag research documents that are invalidated by spec constraints.\n\n### Output\n\nPopulate `tasks\u002Ftodo.md` `## Priority Documentation Todo` with research skills that need re-running. Each item must explain what spec constraint invalidates the current research document.\n\n**Next step:** first unchecked queued item in `tasks\u002Ftodo.md`.\n\n## Constraints\n\n- This skill updates `tasks\u002Ftodo.md`, `tasks\u002Frecord-todo.md`, and `tasks\u002Frecurring-todo.md`; it must not run the queued skills.\n- Preserve user-authored todo content outside `## Priority Documentation Todo`.\n- Preserve user-authored record\u002Frecurring content outside `## Documentation Records` and `## Documentation Recurring Work`.\n- Every stale item must include timestamp evidence.\n- Every enabled research-producing skill must be represented unless its output is present and fresh.\n- Prefer canonical `research\u002F`, `specs\u002F`, and `tasks\u002F` paths over aliases.\n- In monorepo mode, include app-scoped commands and output paths.\n- Do not put condition-gated measurements, future validation records, or cadence-based research jobs into `tasks\u002Ftodo.md` unless they are immediately executable.\n- Do not create or modify source code.\n\n## Alignment Page\n\nWhen this skill produces durable deliverables (research, specs, plans, reports, prototypes, or any document output), build a full-depth HTML alignment page at `alignment\u002Fresearch-roadmap-{topic}.html`. Use a normalized topic slug derived from the app, feature, research subject, report subject, or output filename.\n\n**Full content requirement.** The alignment page must contain the complete content of every proposed markdown deliverable -- every section, every finding, every detail, every list item. It is a thorough interactive review document, not a summary. Render the full deliverable content in clean, readable HTML with appropriate hierarchy, styling, and navigation. If the skill writes multiple scoped deliverables in one run, build one alignment page that contains all deliverables with anchor-linked navigation. Durable tracker artifacts, such as `research\u002Fassumption-tracker.md`, remain canonical markdown outputs but must also be fully rendered into the alignment page before approval.\n\n**Dark-mode styling.** Use a dark color scheme by default. Base CSS variables: `--bg: #0d1117; --surface: #161b22; --border: #30363d; --text: #c9d1d9; --text-muted: #8b949e; --accent: #58a6ff; --green: #3fb950; --red: #f85149; --orange: #d29922; --purple: #bc8cff;`. Apply `background: var(--bg); color: var(--text);` on body. Use `--surface` for cards, nav, and table headers. Use `--border` for all borders. Use `--purple` for question blocks and gate headings. Use `--accent` for links and section headings. Keep headings `color: #fff` or `var(--accent)` for hierarchy. Question block backgrounds should use `#1c2333`.\n\n**Alignment gates.** Treat gates as explicit review sections inside the HTML page. A gate blocks finalization until its required inline questions are answered and compiled into YAML. Include every gate that applies to the skill output, and include these gate types whenever relevant: evidence coverage, assumptions\u002Fconfidence, scope\u002Fnon-goals, candidate\u002Fverdict decisions, artifact destination, proposed file changes, coverage checkpoint, and post-approval route.\n\n**Report-only research gates.** For report-only or pre-approval research skills, the alignment page must explicitly contain evidence coverage, assumptions\u002Fconfidence, recommended path, proposed file changes, and approval gates before any canonical research, spec, or task file is created or updated.\n\n\n**Required inline questions.** Each gate must contain at least one required inline question placed directly under the content it governs, inside a visually distinct question block. Each question must use radio-button inputs and include two standing options after the skill-generated choices: \"Other \u002F None of the above\" backed by a multi-line text box for free-form input, and \"Need clarification\" backed by an optional notes box where the user can explain what is unclear. When any radio option other than \"Other\" or \"Need clarification\" is selected, show an optional \"Additional notes\" text box beneath it so the user can qualify their choice. Generate questions based on what genuinely needs user input -- do not add filler questions. Do not create a separate bottom \"Decisions & Clarifications\" section.\n\n**Gate YAML contract.** At the bottom of the page, include a \"Compile Answers\" button that aggregates answers from all inline gate questions throughout the page, including free-text notes. The button remains disabled until every required question has a selection, shows a count of remaining unanswered questions, and scrolls to the first unanswered question if clicked early. When every question is answered, generate a structured YAML block with one item per gate answer using this stable shape: `section`, `gate_type`, `status` (`answered`, `other`, or `needs-clarification`), `answer`, optional `notes`, and optional `target_artifact` or `target_path` when the gate controls file output. After successful compilation, automatically attempt to copy the YAML to the clipboard with the Clipboard API, display copy status, and display the YAML in a read-only textarea with an explicit \"Copy YAML\" button. The copy button must retry clipboard copy when supported and fall back to selecting the textarea contents when clipboard access is unavailable or blocked.\n\n**Pre-approval stop.** Before user approval, the next action is review of the HTML alignment page, not downstream routing. Ask the user to review the page and provide the compiled YAML answers. Do not include `Recommended next skill`, `Recommended next command`, or downstream routing language until after compiled YAML has been provided and the approved artifacts have been written or updated.\n\n**Diff highlighting on updates.** When the agent updates an existing alignment page after receiving compiled answers, highlight what changed since the previous version. The agent chooses inline annotation or side-by-side layout per situation.\n\n**Archiving.** Before replacing an existing alignment page, archive it to `docs\u002Fhistory\u002Farchive\u002FYYYY-MM-DD\u002FHHMMSS\u002Falignment\u002Fresearch-roadmap-{topic}.html`.\n\n**Browser open.** Attempt to open the resulting HTML page in the browser and report whether the open succeeded or was blocked. A blocked browser-open attempt does not make the skill fail when the files were written correctly.\n\n## Archive-First Replacement Policy\n\n- Before replacing or substantively rewriting an existing canonical research\u002Fspec document (`research\u002F**\u002F*.md`, `specs\u002F**\u002F*.md`, or `docs\u002Fspecifications\u002F**\u002F*.md`), copy the current file to `docs\u002Fhistory\u002Farchive\u002FYYYY-MM-DD\u002FHHMMSS\u002F\u003Coriginal-relative-path>`.\n- Preserve the archived snapshot exactly as it existed before the change; do not edit the archived copy after creating it.\n- After the archive snapshot exists, write the updated document to the original canonical path.\n- Report both the archive path and the updated canonical path in the final output.\n- New files do not need archive snapshots. Append-only updates do not need archive snapshots unless an existing section is regenerated or rewritten.\n- Keep any existing user approval requirement before overwriting or replacing a document; archiving does not replace asking when the skill already requires approval.\n\n## Default Shipping Contract\n\n- **Default next-step routing:** when reporting completion, include either `Recommended next skill: \u003Ccommand>` or the two-line pair `**Next work:** \u003Cspecific task, discovery task, blocker, or explicit parked state>` and `**Recommended next command:** \u003Cone command or route>` so the next operator has a concrete handoff. Do not use `none` as the command unless the user explicitly asked to pause, park, archive, or wait; exhausted queues route to `$brainstorm`.\n- If this skill creates or modifies tracked repository files, finish by committing and pushing all intended changes to the repository primary branch (`main` when present, otherwise `master`) before stopping, even if the user did not explicitly ask for commit\u002Fpush.\n- Do not leave tracked changes or unpushed commits behind. If unrelated tracked work is already present, either include it in sensible commits too or stop and explain the blocker.\n- This contract does not override stricter safety rules about secrets, destructive history changes, release publication\u002Ftag confirmation, or production deploy confirmation.\n",{"name":5,"type":33,"version":44,"description":7},"v0.0","master","96e2912af886dd1606b1b97df707715aef062b02","packs\u002Fresearch-admin\u002Fcodex\u002Fresearch-roadmap\u002Farchive\u002Fv0.0",0,"https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills","https:\u002F\u002Fagentic-skills-blush.vercel.app","https:\u002F\u002Fgithub.com\u002FGeorgeQLe","georgeqle.com","George Le is a futurist and serial tech entrepreneur who wants to work toward a world where humanity is free from robotic tasks.","2026-11-10 04:07:24",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add GeorgeQLe\u002Fagentic-skills --skill research-roadmap",{"tool":61,"command":62},"bunx","bunx skills add GeorgeQLe\u002Fagentic-skills --skill research-roadmap",{"tool":64,"command":65},"pnpm","pnpm dlx skills add GeorgeQLe\u002Fagentic-skills --skill research-roadmap","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Fpacks\u002Fresearch-admin\u002Fcodex\u002Fresearch-roadmap\u002Farchive\u002Fv0.0\u002FSKILL.md",true,[],[70,82,92,104,117,128],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":39},"01M6G0NJES15RJKZE6YZ0TSYGF","source-checkout-allowed","Valid source-checkout-only fixture.","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskill-install-routing\u002Fvalid\u002Fsource-checkout-allowed\u002FSKILL.md",[],[77,78,79,80,35,81],"source checkout allowed","checkout","fixture","only","valid",{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":39},"01M6G0NFZ3R1MNB1E3DVTM0WB7","deck-install-valid","Valid deck install fixture.","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskill-install-routing\u002Fvalid\u002Fdeck-install\u002FSKILL.md",[],[89,90,91,81,79,35],"deck install valid","deck","install",{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":39},"01M6G0ND3QZQC4MDZ9NVB97PT2","codex-pack-guard-valid","Valid Codex Pack Availability Guard fixture.","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskill-install-routing\u002Fvalid\u002Fcodex-pack-guard\u002FSKILL.md",[],[99,100,101,81,102,103,79,35],"codex pack guard valid","pack","guard","codex","availability",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":113,"publishedAt":39},"01M6G0NA9YB3NKGZKD3S96JMNB","codex-missing-skill-valid","Valid Codex missing skill fallback fixture.","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskill-install-routing\u002Fvalid\u002Fcodex-missing-skill-fallback\u002FSKILL.md",[110],{"categoryNo":111,"categoryName":112,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[114,115,81,102,35,116,79],"codex missing skill valid","missing","fallback",{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":124,"publishedAt":39},"01M6G0N7PC0EKFD40ZWQAXSAQ9","codex-base-skill-fallback-valid","Valid Codex base skill fallback fixture.","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskill-install-routing\u002Fvalid\u002Fcodex-base-skill-fallback\u002FSKILL.md",[123],{"categoryNo":111,"categoryName":112,"taxonomyType":21,"taxonomyTypeDesc":22},[81,102,116,125,126,127,35,79],"base skill","codex base skill fallback valid","base",{"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":39},"01M6G0N4VRR2YKZQ6N3Y6S2BQA","claude-pack-guard-valid","Valid Claude Pack Availability Guard fixture.","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskill-install-routing\u002Fvalid\u002Fclaude-pack-guard\u002FSKILL.md",[],[81,101,100,135,103,35,79],"claude pack guard valid"]