Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ the product unless they directly support a named design/build workflow.

Read the detailed contracts:

- [`docs/skill-architecture.md`](docs/skill-architecture.md) — the current 156-capability estate, cuts, merges, families, packages, and routing model.
- [`docs/skill-architecture.md`](docs/skill-architecture.md) — the current 157-capability estate, cuts, merges, families, packages, and routing model.
- [`docs/architecture.md`](docs/architecture.md) — ownership, catalog, and inclusion boundary.
- [`docs/capability-lifecycle.md`](docs/capability-lifecycle.md) — evidence, review, and lifecycle transitions.
- [`docs/bookmark-curation.md`](docs/bookmark-curation.md) — safe intake through review packet.
Expand Down
1 change: 1 addition & 0 deletions THIRD_PARTY_NOTICES.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@ Stack owns command mappings and package metadata, not the upstream skill impleme
| Matt Pocock skills | mattpocock/skills | `391a2701dd948f94f56a39f7533f8eea9a859c87` | MIT |
| David Ondrej skills | davidondrej/skills | `5c99080334072075eb9e0a17837f7d24e4f3e6ae` | MIT |
| Emil Kowalski skills | emilkowalski/skills | `c8a79627b59d72d764d6ab6f2c87c09a48169833` | MIT |
| Stewdio blank-page skill | StewdioAI/blank-page | `cd42b37fa7cd0a5550e51f45cc8f82f63377b98c` | MIT |

Stack-Codex is Stack-owned repository content, bundled under `packages/stack-codex/content` so a GitHub clone contains the complete eight-skill package. Its package pin, `483015638591618e884d4c21f1fa037b645bb872e33acf063fa7a5f802c80df3`, is a deterministic SHA-256 digest over sorted relative paths and exact file bytes. It is not an external upstream and does not appear in the third-party table above.
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@
"skills/imported/matt/matt-triage/SKILL.md": "skills/imported/matt/matt-triage/capability.json",
"skills/imported/matt/matt-wayfinder/SKILL.md": "skills/imported/matt/matt-wayfinder/capability.json",
"skills/imported/matt/matt-writing-great-skills/SKILL.md": "skills/imported/matt/matt-writing-great-skills/capability.json",
"skills/imported/stewdio/blank-page/SKILL.md": "skills/imported/stewdio/blank-page/capability.json",
"skills/imported/studio/design/asset-generation/SKILL.md": "skills/imported/studio/design/asset-generation/capability.json",
"skills/imported/studio/design/design-system/SKILL.md": "skills/imported/studio/design/design-system/capability.json",
"skills/imported/studio/design/layout-strategy/SKILL.md": "skills/imported/studio/design/layout-strategy/capability.json",
Expand Down Expand Up @@ -284,6 +285,7 @@
"skills/imported/matt/matt-triage/SKILL.md",
"skills/imported/matt/matt-wayfinder/SKILL.md",
"skills/imported/matt/matt-writing-great-skills/SKILL.md",
"skills/imported/stewdio/blank-page/SKILL.md",
"skills/imported/studio/design/asset-generation/SKILL.md",
"skills/imported/studio/design/design-system/SKILL.md",
"skills/imported/studio/design/layout-strategy/SKILL.md",
Expand Down Expand Up @@ -326,8 +328,8 @@
"missing": []
},
"counts": {
"callable_skills": 156,
"manifests": 156,
"callable_skills": 157,
"manifests": 157,
"package_exports": 20,
"private_declarations": 1,
"unclassified": 0
Expand Down
2 changes: 1 addition & 1 deletion config/runtime-targets.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"schema_version": 1,
"catalog_digest": "82746e82d33ae72d52e029aa3758fd469d02644ddc2adb584652872f31316bea",
"catalog_digest": "fc8fee82769187387a9e66ecf35ae6c67ba572454d56a4f02d1e13de8872182e",
"targets": [
{
"name": "claude",
Expand Down
2 changes: 2 additions & 0 deletions config/stack-maintenance.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"emil-design-eng",
"review-animations",
"emil-skills",
"stewdio-skills",
"illo-skill",
"codex-plugin-marketplace",
"claude-plugin-marketplace",
Expand Down Expand Up @@ -103,6 +104,7 @@
"skills/imported/matt/",
"skills/imported/david/",
"skills/imported/emil/",
"skills/imported/stewdio/",
"skills/design/review-animations/",
"docs/stack-maintenance.md"
],
Expand Down
8 changes: 4 additions & 4 deletions docs/skill-architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@ Stack is a runtime-neutral control plane for software work. Logical command IDs
The refactor began with 150 callable skills. Nine personal-operations and
knowledge-management workflows were integrated into their existing native
owners and removed from Stack, leaving 141 capabilities. The full Emil Kowalski
collection (15 more pinned imports under `skills/imported/emil/`) brings the
catalog to 156 capabilities: 148 active capabilities and eight deprecated
compatibility routes.
collection (15 more pinned imports under `skills/imported/emil/`) and Stewdio's
`blank-page` (`skills/imported/stewdio/`) bring the catalog to 157 capabilities:
149 active capabilities and eight deprecated compatibility routes.

| Family | Capabilities |
| --- | ---: |
| Core | 5 |
| Product | 6 |
| Planning | 7 |
| Design | 28 |
| Design | 29 |
| Engineering | 71 |
| Orchestration | 11 |
| Review | 5 |
Expand Down
2 changes: 1 addition & 1 deletion packages/imported-skills/package.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"schema_version":1,"provider":"imported-skills","registry":"registry/upstreams.json","source_mode":"pinned-import","copy_upstream_source":false,"providers":["matt","david","emil"],"provenance_rule":"Functional family placement does not replace provider identity."}
{"schema_version":1,"provider":"imported-skills","registry":"registry/upstreams.json","source_mode":"pinned-import","copy_upstream_source":false,"providers":["matt","david","emil","stewdio"],"provenance_rule":"Functional family placement does not replace provider identity."}
67 changes: 65 additions & 2 deletions registry/capabilities.json
Original file line number Diff line number Diff line change
Expand Up @@ -567,6 +567,69 @@
"validation_class": "representative-route",
"visibility": "extended"
},
{
"artifact_type": "skill",
"audit_status": "reviewed",
"canonical_name": "blank-page",
"commands": [
"stack.design"
],
"context": {
"inputs": [
"request",
"workspace-context"
],
"outputs": [
"capability-result"
]
},
"disposition": {
"evidence_gap": null,
"next_review_trigger": "Reassess on source, export, or runtime-target change.",
"status": "keep"
},
"domain": "design",
"family": "design",
"lifecycle": "active",
"overlaps": [],
"ownership": {
"package": "imported-skills",
"provider": "stewdio",
"source_path": "skills/imported/stewdio/blank-page/SKILL.md"
},
"provenance": {
"license": "MIT",
"posture": "imported-upstream",
"source_identity": "upstream:stewdio/skills/blank-page"
},
"purpose": "Turn a one-line motion / animation / design brief into the full prompt: a committed look grounded in five reference images, three motion references, numbered beats with a turn, and the refs and assets attached. Also tightens edit notes. Use for \"/blank-page\", \"expand this prompt\", \"make this prompt more specific\", \"what is missing from this prompt\", \"help me write the prompt for X\", or whenever a one-line animation / composition / design brief is about to be handed to an agent.",
"role": "leaf",
"runtimes": {
"publish_targets": [
"claude",
"codex"
],
"supported": [
"claude",
"codex"
]
},
"schema_version": 1,
"source": {
"skill_path": "skills/imported/stewdio/blank-page/SKILL.md"
},
"trust_class": "read-only",
"validation": {
"evidence": [
"reviewed-estate-refactor",
"structural-classification",
"primary-runtime-parity"
],
"status": "validated"
},
"validation_class": "representative-route",
"visibility": "extended"
},
{
"artifact_type": "skill",
"audit_status": "reviewed",
Expand Down Expand Up @@ -9870,7 +9933,7 @@
"catalog_kind": "stack-capability-catalog",
"schema_version": 1,
"summary": {
"callable_entrypoint_count": 156,
"capability_count": 156
"callable_entrypoint_count": 157,
"capability_count": 157
}
}
17 changes: 17 additions & 0 deletions registry/maintenance-imports.json
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,23 @@
"target": "skills/imported/emil/emil-write-swift"
}
]
},
{
"id": "stewdio",
"display_name": "Blake Shao (Stewdio)",
"target_root": ".",
"target_prefix": "",
"mapping": "explicit-source-json",
"source_metadata": "references/source.json",
"license": "MIT",
"retained_targets": [],
"retained_files": [],
"targets": [
{
"source": "skills/blank-page",
"target": "skills/imported/stewdio/blank-page"
}
]
}
]
}
10 changes: 10 additions & 0 deletions registry/maintenance-sources.json
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,16 @@
"target_paths": ["skills/imported/emil/emil-animate", "skills/imported/emil/emil-animate-expo", "skills/imported/emil/emil-animation-performance", "skills/imported/emil/emil-animation-vocabulary", "skills/imported/emil/emil-apple-design", "skills/imported/emil/emil-ask-sonner", "skills/imported/emil/emil-break-ui", "skills/imported/emil/emil-choreograph", "skills/imported/emil/emil-find-animation-opportunities", "skills/imported/emil/emil-improve-animations", "skills/imported/emil/emil-mobile-native", "skills/imported/emil/emil-pick-ui-library", "skills/imported/emil/emil-prototype", "skills/imported/emil/emil-remove-animations", "skills/imported/emil/emil-write-swift"],
"required_exports": ["emil-animate", "emil-animate-expo", "emil-animation-performance", "emil-animation-vocabulary", "emil-apple-design", "emil-ask-sonner", "emil-break-ui", "emil-choreograph", "emil-find-animation-opportunities", "emil-improve-animations", "emil-mobile-native", "emil-pick-ui-library", "emil-prototype", "emil-remove-animations", "emil-write-swift"]
},
{
"id": "stewdio-skills",
"target": "Blake Shao (Stewdio) imported skill collection",
"disposition": "catalog-managed-provider",
"provider_ref": "StewdioAI/blank-page",
"pin_source": "registry/upstreams.json:stewdio",
"provider_id": "stewdio",
"target_paths": ["skills/imported/stewdio/blank-page"],
"required_exports": ["blank-page"]
},
{
"id": "illo-skill",
"target": "illo external plugin and marketplace",
Expand Down
5 changes: 5 additions & 0 deletions registry/migrations/2026-07-23-skill-layout.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@
"destination": "skills/design/better-icons/SKILL.md",
"source": "skills/better-icons/SKILL.md"
},
{
"canonical_name": "blank-page",
"destination": "skills/imported/stewdio/blank-page/SKILL.md",
"source": "skills/imported/stewdio/blank-page/SKILL.md"
},
{
"canonical_name": "bolder",
"destination": "skills/imported/impeccable/bolder/SKILL.md",
Expand Down
3 changes: 2 additions & 1 deletion registry/upstreams.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
{"id":"stack-codex","kind":"repository-package","canonical_source":"https://github.com/thecolormaroun/stack.git","pin":{"type":"sha256","value":"b773ec2e1f6353693184d7bda47bec9ca90663b5526c4c6690fec7e6cdf49595"},"license":"Stack-owned repository content","exports":["orchestrate-parallel-goals","stack-gemini-review","stack-ideate","stack-lfg","stack-mega","stack-review","stack-ship","stack-sync"],"install":"repository-bundle","bundle_path":"packages/stack-codex/content","adapters":["stack.explore","stack.build","stack.orchestrate","stack.review","stack.ship","stack.maintain","stack.run"],"compatibility":["tests/test_command_registry.py","tests/test_upstream_packages.py"],"last_known_good":{"pin":"b773ec2e1f6353693184d7bda47bec9ca90663b5526c4c6690fec7e6cdf49595","metadata_digest":"b773ec2e1f6353693184d7bda47bec9ca90663b5526c4c6690fec7e6cdf49595"}},
{"id":"matt","kind":"imported-collection","canonical_source":"https://github.com/mattpocock/skills.git","pin":{"type":"git-commit","value":"391a2701dd948f94f56a39f7533f8eea9a859c87"},"license":"MIT","license_sha256":"0e7ac423bf2c6e223b7c5b156f8cf72da49d748e56a1641402c31f22ad07dbb5","exports":["matt-code-review","matt-implement","matt-tdd"],"install":"pinned-import","adapters":["stack.build","stack.review"],"compatibility":["tests/test_upstream_packages.py"],"last_known_good":{"pin":"391a2701dd948f94f56a39f7533f8eea9a859c87","metadata_digest":"314c8e07b7e3989b4844e9d0a6f760001bd4955e09b1fc0f6d27f04cf5f6dd8d"}},
{"id":"david","kind":"imported-collection","canonical_source":"https://github.com/davidondrej/skills.git","pin":{"type":"git-commit","value":"5c99080334072075eb9e0a17837f7d24e4f3e6ae"},"license":"MIT","license_sha256":"1bd321a3b9cfa8d4af2105e20edd69d830df0b28e83a1b0255558f888e493981","exports":["david-handoff","david-goal-loop","david-read-all-adrs"],"install":"pinned-import","adapters":["stack.orchestrate","stack.learn"],"compatibility":["tests/test_upstream_packages.py"],"last_known_good":{"pin":"5c99080334072075eb9e0a17837f7d24e4f3e6ae","metadata_digest":"7c680c10b3be8907f0e0b214d3913bccbae17cbb839d7d565cf37f8cedc218b4"}},
{"id":"emil","kind":"imported-collection","canonical_source":"https://github.com/emilkowalski/skills.git","pin":{"type":"git-commit","value":"c8a79627b59d72d764d6ab6f2c87c09a48169833"},"license":"MIT","license_sha256":"4ff5bdb7887ec1435c9cab0e8d1a7caee704d894d65c2a008ccc68b1cc2f260b","exports":["emil-animate","emil-animate-expo","emil-animation-performance","emil-animation-vocabulary","emil-apple-design","emil-ask-sonner","emil-break-ui","emil-choreograph","emil-design-eng","emil-find-animation-opportunities","emil-improve-animations","emil-mobile-native","emil-pick-ui-library","emil-prototype","emil-remove-animations","emil-write-swift","review-animations"],"install":"pinned-import","adapters":["stack.design"],"compatibility":["tests/test_upstream_packages.py"],"last_known_good":{"pin":"c8a79627b59d72d764d6ab6f2c87c09a48169833","metadata_digest":"914284e55376793590c835fc17b79e7dba8f0325539d5180d750fbebf8292966"}}
{"id":"emil","kind":"imported-collection","canonical_source":"https://github.com/emilkowalski/skills.git","pin":{"type":"git-commit","value":"c8a79627b59d72d764d6ab6f2c87c09a48169833"},"license":"MIT","license_sha256":"4ff5bdb7887ec1435c9cab0e8d1a7caee704d894d65c2a008ccc68b1cc2f260b","exports":["emil-animate","emil-animate-expo","emil-animation-performance","emil-animation-vocabulary","emil-apple-design","emil-ask-sonner","emil-break-ui","emil-choreograph","emil-design-eng","emil-find-animation-opportunities","emil-improve-animations","emil-mobile-native","emil-pick-ui-library","emil-prototype","emil-remove-animations","emil-write-swift","review-animations"],"install":"pinned-import","adapters":["stack.design"],"compatibility":["tests/test_upstream_packages.py"],"last_known_good":{"pin":"c8a79627b59d72d764d6ab6f2c87c09a48169833","metadata_digest":"914284e55376793590c835fc17b79e7dba8f0325539d5180d750fbebf8292966"}},
{"id":"stewdio","kind":"imported-collection","canonical_source":"https://github.com/StewdioAI/blank-page.git","pin":{"type":"git-commit","value":"cd42b37fa7cd0a5550e51f45cc8f82f63377b98c"},"license":"MIT","license_sha256":"4533bc64e6e26958fd9bf4f9a56b422f9ab31b7dbcfac7bc23a8bd0d5cbdfde9","exports":["blank-page"],"install":"pinned-import","adapters":["stack.design"],"compatibility":["tests/test_upstream_packages.py"],"last_known_good":{"pin":"cd42b37fa7cd0a5550e51f45cc8f82f63377b98c","metadata_digest":"faeea6b4be818bbe31cc77d5e64dbaf45f882e201bc59ce23344da4a3dcae368"}}
]
}
4 changes: 2 additions & 2 deletions scripts/apply-skill-layout.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

ROOT = Path(__file__).resolve().parents[1]
MIGRATION_PATH = ROOT / "registry/migrations/2026-07-23-skill-layout.json"
IMPORT_PROVIDERS = {"matt", "david", "impeccable", "studio", "ui", "emil", "taste-skill-suite"}
IMPORT_PROVIDERS = {"matt", "david", "impeccable", "studio", "ui", "emil", "stewdio", "taste-skill-suite"}


class LayoutError(ValueError):
Expand Down Expand Up @@ -70,7 +70,7 @@ def destination_for(manifest: dict[str, Any], source: str) -> str:
if provider == "taste-skill-suite":
provider_dir = "taste-skill-suite"
# Preserve the collection's inside layout, but remove its old root.
old_root = {"matt": "matt", "david": "david", "impeccable": "impeccable", "studio": "studio", "ui": "ui-skills", "emil": "emil-design-eng", "taste-skill-suite": "taste-skill-suite"}[provider]
old_root = {"matt": "matt", "david": "david", "impeccable": "impeccable", "studio": "studio", "ui": "ui-skills", "emil": "emil-design-eng", "stewdio": "stewdio", "taste-skill-suite": "taste-skill-suite"}[provider]
relative = Path(*parts[2:]) if len(parts) > 2 and parts[1] == old_root else Path(parts[-1])
return (Path("skills/imported") / provider_dir / relative / "SKILL.md").as_posix()
# Stack-owned collections remain collections, including CDO and CPO.
Expand Down
9 changes: 5 additions & 4 deletions scripts/classify-capabilities.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,12 @@
"ideate": "stack.explore",
}
PRIMARY_CAPABILITIES = {"core-stack", "core-run", "cpo"}
# Emil Kowalski collection imports; the rest of that collection falls through to engineering.
EMIL_DESIGN = {
# Pinned design imports (Emil Kowalski, Stewdio); the rest of Emil's collection falls through to engineering.
PINNED_DESIGN_IMPORTS = {
"emil-animate", "emil-animate-expo", "emil-animation-vocabulary", "emil-apple-design", "emil-choreograph",
"emil-find-animation-opportunities", "emil-improve-animations", "emil-mobile-native", "emil-prototype",
"emil-remove-animations",
"blank-page",
}
PURPOSE_OVERRIDES = {
"agent-operating-stack": "Deprecated compatibility alias for the canonical Stack root router.",
Expand All @@ -64,7 +65,7 @@ def canonical_json(value: Any) -> str:


def provider_for(path: str) -> tuple[str, str]:
for provider in ("matt", "david", "impeccable", "studio", "ui", "emil", "taste-skill-suite", "other"):
for provider in ("matt", "david", "impeccable", "studio", "ui", "emil", "stewdio", "taste-skill-suite", "other"):
if path.startswith(f"skills/imported/{provider}/"):
return provider, "imported-skills"
for prefix, provider in (("skills/matt-", "matt"), ("skills/david-", "david"), ("skills/impeccable/", "impeccable"), ("skills/studio/", "studio"), ("skills/ui-skills/", "ui"), ("skills/emil-", "emil"), ("skills/taste-skill-suite/", "impeccable")):
Expand All @@ -85,7 +86,7 @@ def family_for(name: str, path: str) -> str:
return "product"
if path.startswith("skills/studio/research/") or name in {"field-theory-bookmark-synthesis", "fieldbook-source-split", "david-deep-research", "david-research-prompt", "david-youtube-transcript", "matt-research", "muller-brockmann-grid-systems", "userinterface-wiki"}:
return "knowledge"
if path.startswith(("skills/studio/design/", "skills/impeccable/", "skills/ui-skills/", "skills/cdo/")) or name in {"cdo", "emil-design-eng", "illo", "better-icons", "review-animations", "ui-design-brain", "make-interfaces-feel-better", "design-intelligence", "rams", "deslop", "taste-skill-suite-soft-skill", "taste-skill-suite-redesign-skill", "cdo-taste-skill"} or name in EMIL_DESIGN:
if path.startswith(("skills/studio/design/", "skills/impeccable/", "skills/ui-skills/", "skills/cdo/")) or name in {"cdo", "emil-design-eng", "illo", "better-icons", "review-animations", "ui-design-brain", "make-interfaces-feel-better", "design-intelligence", "rams", "deslop", "taste-skill-suite-soft-skill", "taste-skill-suite-redesign-skill", "cdo-taste-skill"} or name in PINNED_DESIGN_IMPORTS:
return "design"
if name in {"tdd", "matt-tdd", "matt-implement", "matt-prototype", "matt-diagnosing-bugs", "matt-codebase-design", "matt-domain-modeling", "matt-improve-codebase-architecture", "matt-ask-matt", "react-doctor", "simplify", "knip", "fix-sentry-issues", "gemini-review"}:
return "engineering"
Expand Down
Loading
Loading