{"roles":[{"role":"shared","skills":[{"skill_name":"destructive-ops","description":"The four-stage safety workflow for any destructive operation (bulk delete/","origin":"shared","lifecycle":"active","tier":1,"use_count":0,"success_count":0},{"skill_name":"verification-gate","description":"\"Done\" means done WITH PROOF, judged by an INDEPENDENT eye against the GOAL — the actual artifact vs expected_output, never the agent's self-report. Explicit gates beat implicit trust; verify a hypothesis read-only before implementing;","origin":"shared","lifecycle":"active","tier":1,"use_count":0,"success_count":0}]},{"role":"pm","skills":[{"skill_name":"briefing","description":"How to write a node brief a worker can act on without guessing — source-of-truth verification, detail calibrated to the role's competency level, and a measurable expected_output. Use before dispatching any node.","origin":"role","lifecycle":"active","tier":1,"use_count":0,"success_count":0},{"skill_name":"decomposition","description":"How the PM turns one user request into a minimal role-DAG of atomic, gated nodes — each with an explicit dependency edge and a verifiable expected_output. Includes the DIRECT-vs-BUILD classifier (and the BUILD sub-types). Use BEFORE creating the first node for any new request. Model-agnostic; no client data.","origin":"role","lifecycle":"active","tier":1,"use_count":0,"success_count":0},{"skill_name":"execution-control","description":"How the PM/orchestrator drives a running DAG — triage order for worker reports, verifying \"done\" against expected_output instead of trusting it, reading repeated signals as system patterns, and coordinating parallel nodes around a frozen contract. Use whenever processing reports / supervising a run.","origin":"role","lifecycle":"active","tier":1,"use_count":0,"success_count":0},{"skill_name":"spec-interview","description":"How to intake a new feature — check it against the sphere's direction, interview the user block-by-block, write the spec as you go, and get explicit approval before decomposing into a DAG. Use for new features or anything needing a cross-role contract.","origin":"role","lifecycle":"active","tier":1,"use_count":0,"success_count":0},{"skill_name":"unblocking","description":"How the PM resolves BLOCKED/QUESTION/ESCALATION — the decision tree for who decides (PM within the rails vs escalate to the user via the orchestrator), structural unblocks that need no answer, concise escalation, and killing systemic blockers once. Use on any blocking report. First in triage.","origin":"role","lifecycle":"active","tier":1,"use_count":0,"success_count":0}]},{"role":"researcher","skills":[{"skill_name":"analysis","description":"How the researcher turns a tool / product / option into a decision-grade written analysis — verdict first, sharp discriminators over feature lists, fact separated from inference, every risk severity-rated, and a MANDATORY \"vs our own system\" section. The deliverable is a WRITTEN FILE published at an openable external link — never a prose answer. Use for any \"analyse X\" / \"разбери инструмент X\" request. Model-agnostic; no client data.","origin":"role","lifecycle":"active","tier":1,"use_count":0,"success_count":0},{"skill_name":"comparison","description":"How the researcher compares two artifacts (two analyses, two tools, two approaches) OR self-audits one deliverable before shipping — an axis grid, a cell-level contradiction check, a sharp-discriminator coverage score, and a","origin":"role","lifecycle":"active","tier":1,"use_count":0,"success_count":0}]}],"skills":[{"name":"destructive-ops","description":"The four-stage safety workflow for any destructive operation (bulk delete/","role":null,"layer":"shared","tier":1,"lifecycle":"active","use_count":0,"success_count":0,"tracked":true,"path":"/opt/space/studio/shared-skills/destructive-ops.md"},{"name":"verification-gate","description":"\"Done\" means done WITH PROOF, judged by an INDEPENDENT eye against the GOAL — the actual artifact vs expected_output, never the agent's self-report. Explicit gates beat implicit trust; verify a hypothesis read-only before implementing;","role":null,"layer":"shared","tier":1,"lifecycle":"active","use_count":0,"success_count":0,"tracked":true,"path":"/opt/space/studio/shared-skills/verification-gate.md"},{"name":"briefing","description":"How to write a node brief a worker can act on without guessing — source-of-truth verification, detail calibrated to the role's competency level, and a measurable expected_output. Use before dispatching any node.","role":"pm","layer":"role","tier":1,"lifecycle":"active","use_count":0,"success_count":0,"tracked":false,"path":"/opt/space/studio/roles/pm/skills/briefing.md"},{"name":"decomposition","description":"How the PM turns one user request into a minimal role-DAG of atomic, gated nodes — each with an explicit dependency edge and a verifiable expected_output. Includes the DIRECT-vs-BUILD classifier (and the BUILD sub-types). Use BEFORE creating the first node for any new request. Model-agnostic; no client data.","role":"pm","layer":"role","tier":1,"lifecycle":"active","use_count":0,"success_count":0,"tracked":false,"path":"/opt/space/studio/roles/pm/skills/decomposition.md"},{"name":"execution-control","description":"How the PM/orchestrator drives a running DAG — triage order for worker reports, verifying \"done\" against expected_output instead of trusting it, reading repeated signals as system patterns, and coordinating parallel nodes around a frozen contract. Use whenever processing reports / supervising a run.","role":"pm","layer":"role","tier":1,"lifecycle":"active","use_count":0,"success_count":0,"tracked":false,"path":"/opt/space/studio/roles/pm/skills/execution-control.md"},{"name":"spec-interview","description":"How to intake a new feature — check it against the sphere's direction, interview the user block-by-block, write the spec as you go, and get explicit approval before decomposing into a DAG. Use for new features or anything needing a cross-role contract.","role":"pm","layer":"role","tier":1,"lifecycle":"active","use_count":0,"success_count":0,"tracked":false,"path":"/opt/space/studio/roles/pm/skills/spec-interview.md"},{"name":"unblocking","description":"How the PM resolves BLOCKED/QUESTION/ESCALATION — the decision tree for who decides (PM within the rails vs escalate to the user via the orchestrator), structural unblocks that need no answer, concise escalation, and killing systemic blockers once. Use on any blocking report. First in triage.","role":"pm","layer":"role","tier":1,"lifecycle":"active","use_count":0,"success_count":0,"tracked":false,"path":"/opt/space/studio/roles/pm/skills/unblocking.md"},{"name":"analysis","description":"How the researcher turns a tool / product / option into a decision-grade written analysis — verdict first, sharp discriminators over feature lists, fact separated from inference, every risk severity-rated, and a MANDATORY \"vs our own system\" section. The deliverable is a WRITTEN FILE published at an openable external link — never a prose answer. Use for any \"analyse X\" / \"разбери инструмент X\" request. Model-agnostic; no client data.","role":"researcher","layer":"role","tier":1,"lifecycle":"active","use_count":0,"success_count":0,"tracked":false,"path":"/opt/space/studio/roles/researcher/skills/analysis.md"},{"name":"comparison","description":"How the researcher compares two artifacts (two analyses, two tools, two approaches) OR self-audits one deliverable before shipping — an axis grid, a cell-level contradiction check, a sharp-discriminator coverage score, and a","role":"researcher","layer":"role","tier":1,"lifecycle":"active","use_count":0,"success_count":0,"tracked":false,"path":"/opt/space/studio/roles/researcher/skills/comparison.md"}]}