{
  "schema": "sgraph-skills-catalogue/v1",
  "surveyed": "2026-08-24",
  "source": {
    "of_record": "skills__catalogue.json, supplied with the skills.sgit.ai brief pack v0.33.62",
    "method": "a survey of SKILL.md files across two repositories, read at the dates below",
    "repos_reachable_from_this_build": false,
    "note": "This site's build cannot read the skill repositories directly, so the survey is the record and its date is published with every number. When the repos become reachable, gen_catalogue.py should read frontmatter instead and this block should say so. Until then, no number on this site is claimed to be live."
  },
  "counts": {
    "skills": 8,
    "repos": 2,
    "skill_md_words": 16338
  },
  "divergent_duplicate": {
    "name": "use-sg-playwright",
    "copies": [
      { "repo": "SGraph-AI__App__Send", "words": 1361 },
      { "repo": "SGraph-AI__Service__Playwright", "words": 1404 }
    ],
    "note": "Two copies, diverging; the __Send copy carries the '401 at the proxy' claim the code contradicts (see sg-compute pack 01__ section 4). Exhibit A for the skills-are-packages thesis.",
    "contradicted_claim": "An auth claim about which header the proxy path accepts. The sg-compute pack found the '401 at the proxy' sentence in the __Send copy is wrong; the service copy does not carry it."
  },
  "theory": {
    "dedicated_briefs": 25,
    "words": 60782,
    "core_burst": "1-4 June 2026 (six briefs on 4 June alone)",
    "clusters": [
      "skills are software packages",
      "a skill is a projection of a graph",
      "skills capture how a business works",
      "the skill economy",
      "skills + identity + permissions",
      "the lifecycle (owned by wardley-maps.sgit.ai)"
    ]
  },
  "governance_rules": [
    "skills compete for triggering, so overlapping skills are worse than fewer skills",
    "a skill must not become a second source of truth for a contract that lives elsewhere",
    "skills earn their keep when they cover a distinct task"
  ],
  "authoring_conventions": [
    { "id": "A", "name": "the trigger-rich description", "gist": "the frontmatter description is a retrieval surface, not a summary: name the exact phrases that should fire the skill, the adjacent hosts and tools, and the fuzzy cases" },
    { "id": "B", "name": "the do-NOT-use clause", "gist": "a skill that says when not to fire is a skill that plays well with siblings, because skills compete for triggering" },
    { "id": "C", "name": "self-containedness as a feature", "gist": "embed the schema so the skill does not require a clone: the skill is a package, so it carries its dependencies" },
    { "id": "D", "name": "cross-reference canonical contracts, never copy them", "gist": "point at the contract that already exists rather than becoming a second source of truth for it" },
    { "id": "E", "name": "named-trigger vocabulary", "gist": "enumerate the domain's own terms, so the vocabulary a user already speaks becomes the trigger set" }
  ],
  "lifecycle": [
    { "stage": "Version control",       "code": "ok",   "code_note": "everywhere",     "skills": "part", "skills_note": "skills live in git, but with no versions of their own" },
    { "stage": "Dependency management", "code": "ok",   "code_note": "pip, npm",       "skills": "no",   "skills_note": "none, and the use-sg-playwright duplicate is the consequence" },
    { "stage": "Vulnerability management", "code": "part", "code_note": "partially",   "skills": "no",   "skills_note": "one threat model, February 2026, never repeated" },
    { "stage": "Code review",           "code": "ok",   "code_note": "standard",       "skills": "no",   "skills_note": "no skill review process" },
    { "stage": "CI",                    "code": "ok",   "code_note": "extensive",      "skills": "no",   "skills_note": "no skill is tested" },
    { "stage": "Distribution",          "code": "ok",   "code_note": "PyPI, Docker Hub", "skills": "no", "skills_note": "no registry" },
    { "stage": "Documentation",         "code": "ok",   "code_note": "standard",       "skills": "ok",  "skills_note": "the one stage where skills are arguably ahead of code" }
  ],
  "skills": [
    {
      "name": "create-vault-apps",
      "repo": "SGraph-AI__App__Send",
      "words": 5002,
      "files": 2,
      "description_captured": true,
      "description_head": "Build a polished, self-contained HTML application that lives inside an SG/Send vault and renders from index.html — a photo gallery, strategy microsite, dashboard, report, journal, or any single-page experience. Use this ",
      "trigger_summary": "Authoring a single-page HTML experience that renders from inside a vault: gallery, microsite, dashboard, report, slide deck.",
      "do_not_use": null,
      "conventions": ["A", "D"],
      "version": null,
      "permissions": null,
      "notes": "The largest shipped skill, and the only one spanning two files. Carries the sg.llm.* how-to, and cross-references the canonical window.sg contract in AUTHORING.md rather than copying it (convention D)."
    },
    {
      "name": "create-vault-content",
      "repo": "SGraph-AI__App__Send",
      "words": 3071,
      "files": 1,
      "description_captured": false,
      "description_head": ">",
      "trigger_summary": "Authoring _page.json layouts, markdown documents and folder navigation inside a vault.",
      "do_not_use": null,
      "conventions": ["A", "C"],
      "version": null,
      "permissions": null,
      "notes": "The worked example of convention C: it embeds the full schema reference so it does not require cloning the repo."
    },
    {
      "name": "create-infographics",
      "repo": "SGraph-AI__App__Send",
      "words": 1849,
      "files": 1,
      "description_captured": true,
      "description_head": "Use this skill whenever the user wants to create infographics, slide decks, visual presentations, or image-based content using the SGraph infographic generator API. Triggers include: any mention of 'infographic', 'slide ",
      "trigger_summary": "Turning a document or a brief into AI-generated infographic images or slides. Names its exact trigger phrases (infographic, slide deck, visual summary, deck from document), its adjacent hosts (dev.tools.sgraph.ai, OpenRouter) and its fuzzy case (even if the user just says 'make me a deck').",
      "do_not_use": "Do NOT use for standard PowerPoint (.pptx) creation without AI image generation, or for diagrams/charts that can be handled by code-based visualisation tools.",
      "conventions": ["A", "B"],
      "version": null,
      "permissions": null,
      "notes": "The reference implementation of conventions A and B, and the only skill in the survey whose do-NOT-use clause was captured."
    },
    {
      "name": "use_sgit-and-vaults",
      "repo": "SGraph-AI__App__Send",
      "words": 1612,
      "files": 1,
      "description_captured": false,
      "description_head": ">",
      "trigger_summary": "Clone, commit, push, branch, share and diff a zero-knowledge encrypted vault through sgit.",
      "do_not_use": null,
      "conventions": ["A", "E"],
      "version": null,
      "permissions": null,
      "notes": "The only shipped skill whose subject is the substrate the rest of them write into."
    },
    {
      "name": "use-sg-playwright",
      "repo": "SGraph-AI__App__Send",
      "words": 1361,
      "files": 1,
      "description_captured": true,
      "description_head": "Drive the SG/Playwright browser-automation service over HTTP — navigate pages, run scripted multi-step sequences, take screenshots/PDFs, extract DOM/text/HTML, batch-probe one page from many angles, or hold a stateful br",
      "trigger_summary": "Remote-controlling a real Chromium instance over HTTP: navigate, screenshot, scrape, fill a form, render a PDF.",
      "do_not_use": null,
      "conventions": ["A", "E"],
      "version": null,
      "permissions": null,
      "duplicate_of": "SGraph-AI__Service__Playwright",
      "notes": "One of two diverging copies, and the copy carrying an auth claim the service code contradicts."
    },
    {
      "name": "talk-to-team__send",
      "repo": "SGraph-AI__App__Send",
      "words": 771,
      "files": 1,
      "description_captured": false,
      "description_head": ">",
      "trigger_summary": "Bootstrapping the agentic team session, fired by the team's own role vocabulary: Conductor, Sherpa, AppSec, Architect, Librarian, Cartographer.",
      "do_not_use": null,
      "conventions": ["E"],
      "version": null,
      "permissions": null,
      "notes": "The smallest shipped skill, and a pointer skill: its job is to load context, not to carry it. The reference implementation of convention E."
    },
    {
      "name": "sg-playwright-capabilities",
      "repo": "SGraph-AI__Service__Playwright",
      "words": 1268,
      "files": 1,
      "description_captured": true,
      "description_head": "Code-derived reference of the FULL sg-playwright capability surface — every HTTP endpoint, its request/response schema and field defaults, and every one of the 25 declarative step verbs with their parameters and enums. T",
      "trigger_summary": "Reading the service's live capability surface: every endpoint, schema and step verb, derived from the code.",
      "do_not_use": null,
      "conventions": ["A", "C", "D"],
      "version": null,
      "permissions": null,
      "notes": "Carries the never-the-stale-capabilities.json rule, which is convention D stated as an operating instruction: read the code, not the cached description of it."
    },
    {
      "name": "use-sg-playwright",
      "repo": "SGraph-AI__Service__Playwright",
      "words": 1404,
      "files": 1,
      "description_captured": true,
      "description_head": "Drive the SG/Playwright browser-automation service over HTTP — navigate pages, run scripted multi-step sequences, take screenshots/PDFs, extract DOM/text/HTML, batch-probe one page from many angles, or hold a stateful br",
      "trigger_summary": "Remote-controlling a real Chromium instance over HTTP: navigate, screenshot, scrape, fill a form, render a PDF.",
      "do_not_use": null,
      "conventions": ["A", "E"],
      "version": null,
      "permissions": null,
      "duplicate_of": "SGraph-AI__App__Send",
      "notes": "The longer of the two copies, by the margin this site measures on every build."
    }
  ],
  "backlog": {
    "source": "the sg-playwright repo's skills README",
    "quote": "Empty today.",
    "note": "A written skills backlog with four named candidates, which is skill planning, and rarer than skill writing."
  }
}
