[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DH3T3R646TSM3B3T4MRC86":3,"skill-same:01M6DH3T3R646TSM3B3T4MRC86":65},{"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":18,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":49,"ownerDescription":6,"updatedAt":50,"install":51,"resources":64},"01M6DH3T3R646TSM3B3T4MRC86","decompose",null,"Expand one situated objective into an abstract graph of sub-objectives, decision branches, implied prerequisites, and alternate paths, each a node bound to no executor. Use as soon as an objective is on the graph, so other objectives' tasks can intersect with its parts; the PKB custodian (Pauli) runs it. Exclude for direction across the whole graph (use strategize) or writing one node's dispatchable task (use reify).","nicsuzor\u002FacademicOps","nicsuzor","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F4496978?v=4","01M6DGWCFNDYP03M4DQAHA6DN1","Nicolas Suzor","01M6DGWCPXG37BMXRZZKXR0A1Z",5,"MIT","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-agy\u002Fskills\u002Fdecompose\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"writing","with","can","objective","for","direction","across","task","tasks","use","branches","strategize","decision","node","reify","expand","command","executor","as","2026-11-10 10:12:30",false,"---\nname: decompose\ntype: command\ndescription: Expand one situated objective into an abstract graph of sub-objectives, decision branches, implied prerequisites, and alternate paths, each a node bound to no executor. Use as soon as an objective is on the graph, so other objectives' tasks can intersect with its parts; the PKB custodian (Pauli) runs it. Exclude for direction across the whole graph (use strategize) or writing one node's dispatchable task (use reify).\n---\n\n# \u002Fdecompose -- Expand an objective into an abstract graph\n\n**Object: one objective.** The output is its sub-objectives, forks and probes with their edges: nodes that say what must become true, bound to no executor and no workflow. Objectives and plans are expanded exclusively into abstract graph nodes, never into repository plan files. Decompose early, as soon as the objective is captured, because its sub-objectives are what other objectives' tasks intersect with; a task minted elsewhere can only account for them once they exist. Expand only as far as reliable inference reaches now, and stop at the first unknown. The PKB custodian (Pauli) runs this skill.\n\nState what needs doing, never how. Decompose reads; it runs nothing. What the record cannot settle becomes a probe on the graph.\n\n## Workflow\n\n1. **Reconnaissance**: Read the artefacts and the graph.\n   - Search the record or knowledge base for how the relevant part of the domain or system already works; list what is settled before naming any unknown. What the record settles is not a node or probe; an unknown the record answers is not a node.\n   - A premise is load-bearing when its falsity would change the graph's shape (which nodes exist, which forks are open). Record each one, what settled it, and what it showed.\n   - Resolve every pointer between artefacts and graph both ways. One that no longer resolves is a finding.\n   - A false load-bearing premise halts the run: record it and stop.\n2. **Ground in existing means**:\n   - Take the stage skeleton for this class of work from the workflow template library (e.g. `\u002Fworkflow-library preview`) at stage depth. Its stages are the spine; a stage filled by a choice (method, frame, venue) becomes a fork, never a chosen step.\n   - Place the objective against each stage: met, partly met or open, and the node that carries it.\n   - **Capabilities.** For each component, name what it needs (tool and operation, service, data, credentials) and settle from the record whether some executor has it. Recorded as working somewhere: ground on it. Recorded as absent or refused everywhere: the component needs a prerequisite node. Not on record: a probe the component `depends_on`, whose finding is written back as a capability record. Which executor runs the component is settled at reification, not here.\n3. **Expand within reliable inference**:\n   - **Objective altitude**: Nodes are objectives (\"clarify X and address gaps if required\", \"create the workflow for Y\"), never mechanisms, choices between mechanisms, or probes of tool flags. Those belong to the worker.\n   - Model sub-objectives as far as reliable inference allows. Separate a fork into option nodes (`alternative` links to the decision node) only where the branches themselves are decomposed further. A task that has options to choose between but no commitment to doing anything immediately beyond choosing must not be created with subtasks or separate option nodes; create it as one task with the choices and instructions on how to make the decision in its body. Separate decision points from their validation nodes.\n   - **Stop rule**: When the next step depends on something not yet known, the node ends naming that unknown, and no branches beyond it are modelled.\n4. **Resolve unknowns**:\n   - **Decide**: Choose the obvious path and record the rationale in one bullet.\n   - **Defer**: Mint a probe task (`classification: probe`); dependent nodes `depends_on` it.\n   - **Surface**: With the author in the session, surface forks in conversation, one per turn. For deferred forks whose branches are decomposed further, model competing branches as option nodes wired with `alternative` links to the decision node; choosing one completes it and cancels competing alternatives. Where a choice has no immediate commitment beyond choosing, keep the options and instructions for making the decision inside the decision task without minting subtasks or option nodes.\n5. **Collapse and merge before minting**: mint only what no existing node can carry.\n   - **Collapse to session units**: two components one worker would do in one session against the same material are one node, unless the second must not run in that session (review, verification, merge), they are exclusive options that decompose further, one gates on another party, or deciding between them changes the second.\n   - **Merge into what exists**: search the graph first, `done` tasks and templates included; extend an overlapping node instead of minting a sibling. Overlap with completed work cuts the candidate to what that work left unanswered, wired `soft_depends_on` it; if nothing is left, do not mint.\n   - **A first run is not a step**: the first execution of an existing node belongs to that node.\n6. **Wire the graph**: verb-led titles (`Implement X`), no personal names; `parent_id` for hierarchy, no redundant sibling edges; `depends_on` for hard blockers on waiting tasks, `alternative` links from decomposed option branches to their decision node, `soft_depends_on` for informing context; a convergence node where forks rejoin; slugged ids (`\u003Cslug>`).\n7. **Write or redraw the plan view**:\n   - **Template selection**: Apply the plan-view template named by the user, if specified. Otherwise, discover templates tagged `plan-view` and select the template whose frontmatter marks `default: true`. Do not hardcode template names or identifiers in instructions. Halt loudly if the named template is missing, if no template carries the `plan-view` tag, or if multiple templates carry `default: true`.\n   - **Render the plan**: Apply the selected template to write a `## Plan` section on the objective's top-level task containing the stage strip, Mermaid dependency flowchart, workflow template colour legend, and summary table derived from descendant tasks. Display planned process and structural dependencies only; omit task status, assignee, progress, and execution metrics to preserve single source of truth on the tasks.\n   - **Idempotent redrawing**: Each run and re-run completely replaces any existing `## Plan` section in place, carrying added detail, forks, and graph modifications from the current tree.\n\n## Output Schema\n\n```\n- Expanded [PARENT-ID] into N components, F forks, P probes; C collapsed, M merged\n- Premises: \u003Cpremise> -- held | false | probe TASK-ID; unresolved pointers: \u003Clist | none>\n- Capabilities: \u003Cneed> -- recorded on \u003Cexecutor> | absent | probe TASK-ID\n- Plan view: written | redrawn on [PARENT-ID] via \u003Ctemplate-slug>\n- [TASK-ID] - [TITLE] (fork: \u003Cbranch> | probe for: \u003Cfork-id> | -)\n- Merged into [EXISTING-ID]: \u003Ccandidate> (collapsed | overlap | first run)\n- Halted on: \u003Cunresolved blocker> [if applicable]\n```\n\n## Constraints\n\n- Abstract outcomes only; no execution methods, mechanisms, or scripts.\n- Bind no node to an executor or a workflow and write no acceptance criteria: a node is reified (`\u002Freify`) when it is next to run, and not before.\n- Plan view shows planned process structure only; task status stays exclusively on child tasks.\n","# \u002Fdecompose -- Expand an objective into an abstract graph\n\n**Object: one objective.** The output is its sub-objectives, forks and probes with their edges: nodes that say what must become true, bound to no executor and no workflow. Objectives and plans are expanded exclusively into abstract graph nodes, never into repository plan files. Decompose early, as soon as the objective is captured, because its sub-objectives are what other objectives' tasks intersect with; a task minted elsewhere can only account for them once they exist. Expand only as far as reliable inference reaches now, and stop at the first unknown. The PKB custodian (Pauli) runs this skill.\n\nState what needs doing, never how. Decompose reads; it runs nothing. What the record cannot settle becomes a probe on the graph.\n\n## Workflow\n\n1. **Reconnaissance**: Read the artefacts and the graph.\n   - Search the record or knowledge base for how the relevant part of the domain or system already works; list what is settled before naming any unknown. What the record settles is not a node or probe; an unknown the record answers is not a node.\n   - A premise is load-bearing when its falsity would change the graph's shape (which nodes exist, which forks are open). Record each one, what settled it, and what it showed.\n   - Resolve every pointer between artefacts and graph both ways. One that no longer resolves is a finding.\n   - A false load-bearing premise halts the run: record it and stop.\n2. **Ground in existing means**:\n   - Take the stage skeleton for this class of work from the workflow template library (e.g. `\u002Fworkflow-library preview`) at stage depth. Its stages are the spine; a stage filled by a choice (method, frame, venue) becomes a fork, never a chosen step.\n   - Place the objective against each stage: met, partly met or open, and the node that carries it.\n   - **Capabilities.** For each component, name what it needs (tool and operation, service, data, credentials) and settle from the record whether some executor has it. Recorded as working somewhere: ground on it. Recorded as absent or refused everywhere: the component needs a prerequisite node. Not on record: a probe the component `depends_on`, whose finding is written back as a capability record. Which executor runs the component is settled at reification, not here.\n3. **Expand within reliable inference**:\n   - **Objective altitude**: Nodes are objectives (\"clarify X and address gaps if required\", \"create the workflow for Y\"), never mechanisms, choices between mechanisms, or probes of tool flags. Those belong to the worker.\n   - Model sub-objectives as far as reliable inference allows. Separate a fork into option nodes (`alternative` links to the decision node) only where the branches themselves are decomposed further. A task that has options to choose between but no commitment to doing anything immediately beyond choosing must not be created with subtasks or separate option nodes; create it as one task with the choices and instructions on how to make the decision in its body. Separate decision points from their validation nodes.\n   - **Stop rule**: When the next step depends on something not yet known, the node ends naming that unknown, and no branches beyond it are modelled.\n4. **Resolve unknowns**:\n   - **Decide**: Choose the obvious path and record the rationale in one bullet.\n   - **Defer**: Mint a probe task (`classification: probe`); dependent nodes `depends_on` it.\n   - **Surface**: With the author in the session, surface forks in conversation, one per turn. For deferred forks whose branches are decomposed further, model competing branches as option nodes wired with `alternative` links to the decision node; choosing one completes it and cancels competing alternatives. Where a choice has no immediate commitment beyond choosing, keep the options and instructions for making the decision inside the decision task without minting subtasks or option nodes.\n5. **Collapse and merge before minting**: mint only what no existing node can carry.\n   - **Collapse to session units**: two components one worker would do in one session against the same material are one node, unless the second must not run in that session (review, verification, merge), they are exclusive options that decompose further, one gates on another party, or deciding between them changes the second.\n   - **Merge into what exists**: search the graph first, `done` tasks and templates included; extend an overlapping node instead of minting a sibling. Overlap with completed work cuts the candidate to what that work left unanswered, wired `soft_depends_on` it; if nothing is left, do not mint.\n   - **A first run is not a step**: the first execution of an existing node belongs to that node.\n6. **Wire the graph**: verb-led titles (`Implement X`), no personal names; `parent_id` for hierarchy, no redundant sibling edges; `depends_on` for hard blockers on waiting tasks, `alternative` links from decomposed option branches to their decision node, `soft_depends_on` for informing context; a convergence node where forks rejoin; slugged ids (`\u003Cslug>`).\n7. **Write or redraw the plan view**:\n   - **Template selection**: Apply the plan-view template named by the user, if specified. Otherwise, discover templates tagged `plan-view` and select the template whose frontmatter marks `default: true`. Do not hardcode template names or identifiers in instructions. Halt loudly if the named template is missing, if no template carries the `plan-view` tag, or if multiple templates carry `default: true`.\n   - **Render the plan**: Apply the selected template to write a `## Plan` section on the objective's top-level task containing the stage strip, Mermaid dependency flowchart, workflow template colour legend, and summary table derived from descendant tasks. Display planned process and structural dependencies only; omit task status, assignee, progress, and execution metrics to preserve single source of truth on the tasks.\n   - **Idempotent redrawing**: Each run and re-run completely replaces any existing `## Plan` section in place, carrying added detail, forks, and graph modifications from the current tree.\n\n## Output Schema\n\n```\n- Expanded [PARENT-ID] into N components, F forks, P probes; C collapsed, M merged\n- Premises: \u003Cpremise> -- held | false | probe TASK-ID; unresolved pointers: \u003Clist | none>\n- Capabilities: \u003Cneed> -- recorded on \u003Cexecutor> | absent | probe TASK-ID\n- Plan view: written | redrawn on [PARENT-ID] via \u003Ctemplate-slug>\n- [TASK-ID] - [TITLE] (fork: \u003Cbranch> | probe for: \u003Cfork-id> | -)\n- Merged into [EXISTING-ID]: \u003Ccandidate> (collapsed | overlap | first run)\n- Halted on: \u003Cunresolved blocker> [if applicable]\n```\n\n## Constraints\n\n- Abstract outcomes only; no execution methods, mechanisms, or scripts.\n- Bind no node to an executor or a workflow and write no acceptance criteria: a node is reified (`\u002Freify`) when it is next to run, and not before.\n- Plan view shows planned process structure only; task status stays exclusively on child tasks.\n",{"name":5,"type":35,"description":7},"main","72813be66bbb181f3268196718cd452300e93a1a","ida-agy\u002Fskills\u002Fdecompose",3,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps","https:\u002F\u002Fgithub.com\u002Fnicsuzor","https:\u002F\u002Fnic.suzor.net\u002F","2026-11-10 16:57:47",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add nicsuzor\u002FacademicOps --skill decompose",{"tool":57,"command":58},"bunx","bunx skills add nicsuzor\u002FacademicOps --skill decompose",{"tool":60,"command":61},"pnpm","pnpm dlx skills add nicsuzor\u002FacademicOps --skill decompose","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-agy\u002Fskills\u002Fdecompose\u002FSKILL.md",true,[],[66,90,95,100,105,127],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":38},"01M6M6JR6VXPDA3MDPVS36DSSP","refresh-questions","Sweep and refresh open questions in the Telegram Mini App by closing questions that are answered elsewhere, superseded, or asking for completed actions, and ensuring active open questions carry recommendations and context. Use when asked to refresh questions, sweep stale questions, or keep the Mini App decision queue current. Exclude for asking new questions or routine chat replies.","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fopenclaw\u002Fida-telegram\u002Fskills\u002Frefresh-questions\u002FSKILL.md",[],[73,74,75,76,77,78,31,79,28,80,81,82,83,84,85,86,87,88,89,23],"refresh","refresh questions","questions","actions","telegram mini app","open","context","queue","telegram","stale","chat","active","recommendations","app","keep","replies","closing",{"skillNo":91,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":38},"01M6M6JGW7Q0SC5B28TQ7PKE8E","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-telegram-openclaw\u002Fskills\u002Frefresh-questions\u002FSKILL.md",[],[73,74,75,76,77,78,31,79,28,80,81,82,83,84,85,86,87,88,89,23],{"skillNo":96,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":38},"01M6M6J7D0ZTQ4VSS5ADRSA12E","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-telegram-claude\u002Fskills\u002Frefresh-questions\u002FSKILL.md",[],[73,74,75,76,77,78,31,79,28,80,81,82,83,84,85,86,87,88,89,23],{"skillNo":101,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":38},"01M6M6EP6BK1DDN2212S7Y95G0","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fcowork\u002Fida-telegram\u002Fskills\u002Frefresh-questions\u002FSKILL.md",[],[73,74,75,76,77,78,31,79,28,80,81,82,83,84,85,86,87,88,89,23],{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":38},"01M6G9Q8538NENA2TE2V4HPRSF","dispatch-queue","Show the user the tasks ready to dispatch, ranked with a recommendation on each, and start workers on the ones the user approves -- redirects to universal workflow template wf-dispatch-queue. Use for \"what's ready\", \"what should we dispatch\", or \"dispatch the queue\". Exclude for starting workers on named tasks without the user's choice (use dispatch) or graph truth maintenance (use reconcile).","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fopenclaw\u002Fida\u002Fskills\u002Fdispatch-queue\u002FSKILL.md",[],[112,80,113,114,27,115,116,117,118,119,28,120,121,122,123,124,125,126,20],"dispatch","dispatch queue","workflow","graph","start","template","choice","user","reconcile","ready","maintenance","workers","show","wf","recommendation",{"skillNo":128,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":131,"publishedAt":38},"01M6G9P9M3PQXPX3647RA5E4D0","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-openclaw\u002Fskills\u002Fdispatch-queue\u002FSKILL.md",[],[112,80,113,114,27,115,116,117,118,119,28,120,121,122,123,124,125,126,20]]