@skill-graph/cli 0.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +247 -0
- package/LICENSE +200 -0
- package/NOTICE +62 -0
- package/README.md +398 -0
- package/SKILL_GRAPH.md +443 -0
- package/bin/skill-graph.js +374 -0
- package/docs/ADOPTION.md +117 -0
- package/docs/CONFORMANCE.md +66 -0
- package/docs/PRIMER.md +384 -0
- package/docs/QUICKSTART-30MIN.md +333 -0
- package/docs/ROUTING-METRICS.md +120 -0
- package/docs/SKILL-MD-FORMAT-COMPATIBILITY.md +127 -0
- package/docs/SKILL_AUDIT_CHECKLIST.md +199 -0
- package/docs/SKILL_AUDIT_LOOP.md +195 -0
- package/docs/SKILL_METADATA_PROTOCOL.md +609 -0
- package/docs/_archived/marketplace-publication-priority-2026-05-18.md +239 -0
- package/docs/adr/0001-predicate-set.md +69 -0
- package/docs/adr/0002-json-ld-context.md +82 -0
- package/docs/adr/0003-ontoclean-rigidity-tags.md +65 -0
- package/docs/adr/0004-persistent-identifiers.md +74 -0
- package/docs/adr/0005-freshness-consolidation.md +70 -0
- package/docs/adr/0006-revise-predicate-rename.md +105 -0
- package/docs/adr/0007-audit-loop-cadence.md +99 -0
- package/docs/adr/0008-skill-surface-split-and-curation-policy.md +93 -0
- package/docs/category-consumers.md +168 -0
- package/docs/concept-map.md +194 -0
- package/docs/diagrams/drift-states.mmd +21 -0
- package/docs/diagrams/manifest-pipeline.mmd +25 -0
- package/docs/diagrams/routing-harness.mmd +41 -0
- package/docs/diagrams/starter-graph.mmd +53 -0
- package/docs/field-decision-guide.md +315 -0
- package/docs/field-rationale.md +211 -0
- package/docs/field-reference.generated.md +624 -0
- package/docs/field-reference.md +1426 -0
- package/docs/glossary.md +190 -0
- package/docs/head-noun-glossary.md +63 -0
- package/docs/images/audit-phases.png +0 -0
- package/docs/images/drift-states.png +0 -0
- package/docs/images/graded-mode.png +0 -0
- package/docs/images/manifest-pipeline.png +0 -0
- package/docs/images/routing-harness.png +0 -0
- package/docs/images/skill-anatomy.png +0 -0
- package/docs/images/starter-graph.png +0 -0
- package/docs/images/system-model.png +0 -0
- package/docs/integrations/github-actions.md +155 -0
- package/docs/manifest-field-mapping.md +443 -0
- package/docs/marketplace-publication-queue.generated.md +240 -0
- package/docs/marketplace-release-agent-prompt.md +82 -0
- package/docs/marketplace-skill-candidate-list.md +272 -0
- package/docs/marketplace-syndication.md +222 -0
- package/docs/migration-sample-review.md +155 -0
- package/docs/migrations/v4-to-v5.md +168 -0
- package/docs/migrations/v5-to-v6.md +221 -0
- package/docs/name-exceptions.yaml +37 -0
- package/docs/plans/marketplace-p1-public-migration-plan.md +41 -0
- package/docs/plans/multi-root-workspace.md +148 -0
- package/docs/plans/scripts-roadmap.md +107 -0
- package/docs/plans/v4-schema-bump.md +160 -0
- package/docs/plans/wave-2-extraction.md +122 -0
- package/docs/positioning-vs-marketplaces.md +175 -0
- package/docs/proposals/skill-audit-loop-positioning.md +160 -0
- package/docs/quality-doctrine.md +138 -0
- package/docs/recommended-skills.md +150 -0
- package/docs/research/skill-comprehension-eval-research.md +1830 -0
- package/docs/research/skill-retrieval-evidence.md +66 -0
- package/docs/skill-metadata-protocol.md +471 -0
- package/docs/skills-sh-maintainer-cleanup-request.md +80 -0
- package/examples/audits/a11y/findings.md +52 -0
- package/examples/audits/a11y/scorecard.md +21 -0
- package/examples/audits/a11y/verdict.md +44 -0
- package/examples/audits/debugging/findings.md +59 -0
- package/examples/audits/debugging/scorecard.md +22 -0
- package/examples/audits/debugging/verdict.md +33 -0
- package/examples/audits/documentation/findings.md +59 -0
- package/examples/audits/documentation/scorecard.md +22 -0
- package/examples/audits/documentation/verdict.md +33 -0
- package/examples/evals/a11y.json +140 -0
- package/examples/evals/api-design.json +52 -0
- package/examples/evals/code-review.json +52 -0
- package/examples/evals/data-modeling.json +52 -0
- package/examples/evals/database-migration.json +52 -0
- package/examples/evals/debugging.json +118 -0
- package/examples/evals/dependency-architecture.json +52 -0
- package/examples/evals/design-system-architecture.json +52 -0
- package/examples/evals/error-tracking.json +52 -0
- package/examples/evals/event-contract-design.json +52 -0
- package/examples/evals/form-ux-architecture.json +52 -0
- package/examples/evals/framework-fit-analysis.json +52 -0
- package/examples/evals/graph-audit.json +139 -0
- package/examples/evals/information-architecture.json +52 -0
- package/examples/evals/interaction-feedback.json +52 -0
- package/examples/evals/interaction-patterns.json +52 -0
- package/examples/evals/layout-composition.json +52 -0
- package/examples/evals/lint-overlay.json +117 -0
- package/examples/evals/microcopy.json +52 -0
- package/examples/evals/observability-modeling.json +52 -0
- package/examples/evals/pattern-recognition.json +96 -0
- package/examples/evals/performance-engineering.json +52 -0
- package/examples/evals/refactor.json +128 -0
- package/examples/evals/semiotics.json +52 -0
- package/examples/evals/skill-infrastructure.json +96 -0
- package/examples/evals/skill-router.json +140 -0
- package/examples/evals/skill-router.routing.json +113 -0
- package/examples/evals/system-interface-contracts.json +52 -0
- package/examples/evals/task-analysis.json +52 -0
- package/examples/evals/testing-strategy.json +118 -0
- package/examples/evals/type-safety.json +249 -0
- package/examples/evals/visual-design-foundations.json +52 -0
- package/examples/evals/webhook-integration.json +52 -0
- package/examples/exports/a11y.skill-md.md +80 -0
- package/examples/exports/debugging.skill-md.md +80 -0
- package/examples/exports/refactor.skill-md.md +78 -0
- package/examples/exports/testing-strategy.skill-md.md +81 -0
- package/examples/projects/markdown-static-site/README.md +115 -0
- package/examples/projects/markdown-static-site/skills/content-source-router/SKILL.md +131 -0
- package/examples/projects/markdown-static-site/skills/image-optimization-pipeline-config/SKILL.md +132 -0
- package/examples/projects/markdown-static-site/skills/link-rot-detection/SKILL.md +103 -0
- package/examples/projects/markdown-static-site/skills/markdown-post-frontmatter-validation/SKILL.md +133 -0
- package/examples/projects/markdown-static-site/skills/migrate-posts-to-v2-frontmatter/SKILL.md +140 -0
- package/examples/projects/saas-stripe-postgres/README.md +208 -0
- package/examples/projects/saas-stripe-postgres/db/migrations/0004_canonicalize_orders.sql +37 -0
- package/examples/projects/saas-stripe-postgres/db/schema.sql +112 -0
- package/examples/projects/saas-stripe-postgres/skills/migrate-orders-to-canonical-schema/SKILL.md +149 -0
- package/examples/projects/saas-stripe-postgres/skills/nextjs-server-action-validation/SKILL.md +154 -0
- package/examples/projects/saas-stripe-postgres/skills/payment-provider-router/SKILL.md +153 -0
- package/examples/projects/saas-stripe-postgres/skills/postgres-rls-pattern/SKILL.md +163 -0
- package/examples/projects/saas-stripe-postgres/skills/stripe-webhook-signature-verification/SKILL.md +137 -0
- package/examples/protocol/skill-metadata-template.md +301 -0
- package/examples/protocol/skills.manifest.sample.json +13245 -0
- package/examples/skill-metadata-template.md +317 -0
- package/examples/skills.manifest.sample.json +13519 -0
- package/examples/tests/v3-1-skos-fixture/SKILL.md +93 -0
- package/marketplace/README.md +17 -0
- package/marketplace/skills/a11y/SKILL.md +66 -0
- package/marketplace/skills/acid-fundamentals/SKILL.md +106 -0
- package/marketplace/skills/agent-engineering/SKILL.md +386 -0
- package/marketplace/skills/agent-eval-design/SKILL.md +55 -0
- package/marketplace/skills/ai-native-development/SKILL.md +294 -0
- package/marketplace/skills/api-design/SKILL.md +60 -0
- package/marketplace/skills/architecture-decision-records/SKILL.md +55 -0
- package/marketplace/skills/background-jobs/SKILL.md +265 -0
- package/marketplace/skills/bounded-context-mapping/SKILL.md +55 -0
- package/marketplace/skills/cap-theorem-tradeoffs/SKILL.md +127 -0
- package/marketplace/skills/client-server-boundary/SKILL.md +187 -0
- package/marketplace/skills/code-review/SKILL.md +120 -0
- package/marketplace/skills/color-system-design/SKILL.md +43 -0
- package/marketplace/skills/component-architecture/SKILL.md +126 -0
- package/marketplace/skills/compression/SKILL.md +112 -0
- package/marketplace/skills/conceptual-modeling/SKILL.md +181 -0
- package/marketplace/skills/connection-pooling/SKILL.md +105 -0
- package/marketplace/skills/constraint-awareness/SKILL.md +287 -0
- package/marketplace/skills/content-monitor/SKILL.md +209 -0
- package/marketplace/skills/context-engineering/SKILL.md +320 -0
- package/marketplace/skills/context-graph/SKILL.md +174 -0
- package/marketplace/skills/context-management/SKILL.md +174 -0
- package/marketplace/skills/context-window/SKILL.md +239 -0
- package/marketplace/skills/contract-testing/SKILL.md +120 -0
- package/marketplace/skills/cron-scheduling/SKILL.md +223 -0
- package/marketplace/skills/dark-mode-implementation/SKILL.md +47 -0
- package/marketplace/skills/data-modeling/SKILL.md +59 -0
- package/marketplace/skills/data-modeling-fundamentals/SKILL.md +117 -0
- package/marketplace/skills/database-migration/SKILL.md +429 -0
- package/marketplace/skills/debugging/SKILL.md +67 -0
- package/marketplace/skills/dependency-architecture/SKILL.md +58 -0
- package/marketplace/skills/design-module-composition/SKILL.md +43 -0
- package/marketplace/skills/design-system-architecture/SKILL.md +61 -0
- package/marketplace/skills/design-thinking/SKILL.md +44 -0
- package/marketplace/skills/diagnosis/SKILL.md +296 -0
- package/marketplace/skills/diff-analysis/SKILL.md +188 -0
- package/marketplace/skills/e2e-test-design/SKILL.md +113 -0
- package/marketplace/skills/entity-relationship-modeling/SKILL.md +218 -0
- package/marketplace/skills/epistemic-grounding/SKILL.md +112 -0
- package/marketplace/skills/error-boundary/SKILL.md +235 -0
- package/marketplace/skills/error-tracking/SKILL.md +261 -0
- package/marketplace/skills/eval-driven-development/SKILL.md +147 -0
- package/marketplace/skills/evaluation/SKILL.md +113 -0
- package/marketplace/skills/event-contract-design/SKILL.md +60 -0
- package/marketplace/skills/event-storming/SKILL.md +56 -0
- package/marketplace/skills/form-ux-architecture/SKILL.md +60 -0
- package/marketplace/skills/framework-fit-analysis/SKILL.md +59 -0
- package/marketplace/skills/frontend-architecture/SKILL.md +43 -0
- package/marketplace/skills/generative-ui/SKILL.md +118 -0
- package/marketplace/skills/graph-audit/SKILL.md +81 -0
- package/marketplace/skills/guardrails/SKILL.md +118 -0
- package/marketplace/skills/hooks-patterns/SKILL.md +185 -0
- package/marketplace/skills/http-semantics/SKILL.md +136 -0
- package/marketplace/skills/ideation/SKILL.md +41 -0
- package/marketplace/skills/indexing-strategy/SKILL.md +108 -0
- package/marketplace/skills/information-architecture/SKILL.md +59 -0
- package/marketplace/skills/integration-test-design/SKILL.md +111 -0
- package/marketplace/skills/intent-recognition/SKILL.md +136 -0
- package/marketplace/skills/interaction-feedback/SKILL.md +59 -0
- package/marketplace/skills/interaction-patterns/SKILL.md +59 -0
- package/marketplace/skills/journey-mapping/SKILL.md +41 -0
- package/marketplace/skills/keywords/SKILL.md +213 -0
- package/marketplace/skills/knowledge-modeling/SKILL.md +232 -0
- package/marketplace/skills/layout-composition/SKILL.md +59 -0
- package/marketplace/skills/linguistics/SKILL.md +429 -0
- package/marketplace/skills/lint-overlay/SKILL.md +76 -0
- package/marketplace/skills/mental-models/SKILL.md +126 -0
- package/marketplace/skills/merge-queue/SKILL.md +94 -0
- package/marketplace/skills/methodology/SKILL.md +317 -0
- package/marketplace/skills/microcopy/SKILL.md +232 -0
- package/marketplace/skills/middleware-patterns/SKILL.md +363 -0
- package/marketplace/skills/mobile-responsive-ux/SKILL.md +287 -0
- package/marketplace/skills/mutation-testing/SKILL.md +112 -0
- package/marketplace/skills/naming-conventions/SKILL.md +112 -0
- package/marketplace/skills/observability-modeling/SKILL.md +59 -0
- package/marketplace/skills/ontology-modeling/SKILL.md +67 -0
- package/marketplace/skills/owasp-security/SKILL.md +153 -0
- package/marketplace/skills/pattern-recognition/SKILL.md +472 -0
- package/marketplace/skills/performance-budgets/SKILL.md +185 -0
- package/marketplace/skills/performance-engineering/SKILL.md +58 -0
- package/marketplace/skills/performance-testing/SKILL.md +125 -0
- package/marketplace/skills/printify/SKILL.md +42 -0
- package/marketplace/skills/prioritization/SKILL.md +118 -0
- package/marketplace/skills/problem-framing/SKILL.md +41 -0
- package/marketplace/skills/problem-locating-solving/SKILL.md +203 -0
- package/marketplace/skills/project-knowledge-extraction/SKILL.md +54 -0
- package/marketplace/skills/prompt-craft/SKILL.md +134 -0
- package/marketplace/skills/prompt-injection-defense/SKILL.md +132 -0
- package/marketplace/skills/property-based-testing/SKILL.md +100 -0
- package/marketplace/skills/prototyping/SKILL.md +43 -0
- package/marketplace/skills/query-optimization/SKILL.md +144 -0
- package/marketplace/skills/real-time-updates/SKILL.md +324 -0
- package/marketplace/skills/ref-patterns/SKILL.md +284 -0
- package/marketplace/skills/refactor/SKILL.md +65 -0
- package/marketplace/skills/rendering-models/SKILL.md +142 -0
- package/marketplace/skills/replication-patterns/SKILL.md +110 -0
- package/marketplace/skills/research-synthesis/SKILL.md +41 -0
- package/marketplace/skills/route-handler-design/SKILL.md +347 -0
- package/marketplace/skills/schema-evolution/SKILL.md +140 -0
- package/marketplace/skills/security-fundamentals/SKILL.md +139 -0
- package/marketplace/skills/semantic-center/SKILL.md +194 -0
- package/marketplace/skills/semantic-relations/SKILL.md +250 -0
- package/marketplace/skills/semantics/SKILL.md +366 -0
- package/marketplace/skills/semiotics/SKILL.md +230 -0
- package/marketplace/skills/seo-strategy/SKILL.md +260 -0
- package/marketplace/skills/server-actions-design/SKILL.md +243 -0
- package/marketplace/skills/server-components-design/SKILL.md +190 -0
- package/marketplace/skills/sharding-strategy/SKILL.md +123 -0
- package/marketplace/skills/shopify/SKILL.md +42 -0
- package/marketplace/skills/skill-infrastructure/SKILL.md +320 -0
- package/marketplace/skills/skill-router/SKILL.md +71 -0
- package/marketplace/skills/skill-scaffold/SKILL.md +105 -0
- package/marketplace/skills/snapshot-testing/SKILL.md +120 -0
- package/marketplace/skills/spec-driven-development/SKILL.md +148 -0
- package/marketplace/skills/state-machine-modeling/SKILL.md +56 -0
- package/marketplace/skills/state-management/SKILL.md +134 -0
- package/marketplace/skills/streaming-architecture/SKILL.md +194 -0
- package/marketplace/skills/summarization/SKILL.md +156 -0
- package/marketplace/skills/suspense-patterns/SKILL.md +265 -0
- package/marketplace/skills/system-interface-contracts/SKILL.md +59 -0
- package/marketplace/skills/task-analysis/SKILL.md +201 -0
- package/marketplace/skills/taxonomy-design/SKILL.md +66 -0
- package/marketplace/skills/test-coverage-strategy/SKILL.md +108 -0
- package/marketplace/skills/test-doubles-design/SKILL.md +98 -0
- package/marketplace/skills/test-driven-development/SKILL.md +96 -0
- package/marketplace/skills/testing-strategy/SKILL.md +67 -0
- package/marketplace/skills/theme-system-design/SKILL.md +43 -0
- package/marketplace/skills/tool-call-flow/SKILL.md +229 -0
- package/marketplace/skills/tool-call-strategy/SKILL.md +292 -0
- package/marketplace/skills/transaction-isolation/SKILL.md +98 -0
- package/marketplace/skills/type-safety/SKILL.md +177 -0
- package/marketplace/skills/typography-system/SKILL.md +43 -0
- package/marketplace/skills/usability-testing/SKILL.md +43 -0
- package/marketplace/skills/user-research/SKILL.md +43 -0
- package/marketplace/skills/vercel-composition-patterns/SKILL.md +157 -0
- package/marketplace/skills/version-control/SKILL.md +233 -0
- package/marketplace/skills/visual-design-foundations/SKILL.md +59 -0
- package/marketplace/skills/visual-hierarchy/SKILL.md +43 -0
- package/marketplace/skills/webhook-integration/SKILL.md +331 -0
- package/marketplace/skills/writing-humanizer/SKILL.md +380 -0
- package/package.json +67 -0
- package/schemas/manifest.schema.json +811 -0
- package/schemas/manifest.v2.schema.json +164 -0
- package/schemas/manifest.v3.schema.json +758 -0
- package/schemas/manifest.v4.schema.json +755 -0
- package/schemas/manifest.v5.schema.json +755 -0
- package/schemas/manifest.v6.schema.json +811 -0
- package/schemas/skill.context.jsonld +279 -0
- package/schemas/skill.schema.json +919 -0
- package/schemas/skill.v2.schema.json +201 -0
- package/schemas/skill.v3.schema.json +827 -0
- package/schemas/skill.v4.schema.json +822 -0
- package/schemas/skill.v5.schema.json +830 -0
- package/schemas/skill.v6.schema.json +946 -0
- package/schemas/vocabulary/keywords.json +180 -0
- package/schemas/vocabulary/workspace_tags.json +23 -0
- package/scripts/__tests__/migrate-skill-v2-to-v3.test.js +161 -0
- package/scripts/__tests__/migrate-skill-v3-to-v4.test.js +158 -0
- package/scripts/__tests__/test-export-parser-drift.js +149 -0
- package/scripts/__tests__/test-marketplace-export.js +114 -0
- package/scripts/__tests__/test-router-paths.js +82 -0
- package/scripts/__tests__/test-stability-promotion.js +244 -0
- package/scripts/__tests__/test-v3-1-alias-contract.js +109 -0
- package/scripts/__tests__/test-v3-1-skos-runtime.js +116 -0
- package/scripts/backfill-schema-version.js +198 -0
- package/scripts/build-field-reference.js +160 -0
- package/scripts/build-retrieval-baseline.js +511 -0
- package/scripts/check-markdown-links.js +211 -0
- package/scripts/check-protocol-consistency.js +979 -0
- package/scripts/export-marketplace-skills.js +610 -0
- package/scripts/export-skill.js +374 -0
- package/scripts/generate-manifest.js +787 -0
- package/scripts/lib/alias-contract.js +83 -0
- package/scripts/lib/audit-prompt-builder.js +771 -0
- package/scripts/lib/mock-grader.js +134 -0
- package/scripts/lib/parse-frontmatter.js +429 -0
- package/scripts/lib/roots.js +119 -0
- package/scripts/lint/check-archetype-sections.js +185 -0
- package/scripts/lint/check-category-enum.js +83 -0
- package/scripts/lint/check-routing-eval.js +146 -0
- package/scripts/lint/check-routing-quality.js +211 -0
- package/scripts/lint/check-stability-promotion.js +220 -0
- package/scripts/lint/format-code-frame.js +206 -0
- package/scripts/marketplace-install.js +125 -0
- package/scripts/migrate-category-to-enum.js +169 -0
- package/scripts/migrate-skill-v2-to-v3.js +424 -0
- package/scripts/migrate-skill-v3-to-v4.js +200 -0
- package/scripts/migrate-skill-v5-to-v6.js +304 -0
- package/scripts/restructure-by-category.js +85 -0
- package/scripts/seed-publication-classification.js +282 -0
- package/scripts/skill-audit.js +893 -0
- package/scripts/skill-graph-drift.js +483 -0
- package/scripts/skill-graph-route.js +766 -0
- package/scripts/skill-graph-routing-eval.js +393 -0
- package/scripts/skill-lint.js +1317 -0
- package/scripts/skill-overlap.js +213 -0
- package/scripts/verify-skill-md-export.js +201 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: streaming-architecture
|
|
3
|
+
description: "Use when reasoning about systems that emit a sequence of values over time and consume them incrementally: the producer/stream/consumer/backpressure/termination primitives, the difference between streaming and request-response, the difference between streaming and pub-sub messaging, how WHATWG Streams, Server-Sent Events, HTTP chunked transfer, WebSockets, gRPC streaming, and React Server Component streaming compose, push vs pull backpressure, and the failure modes (slow consumer, abandoned consumer, partial-result correctness). Do NOT use for the message-history protocol between a model and a tool runtime (use tool-call-flow), for the realtime-update channel design (use websocket / SSE skills), for the specific encoding of token-by-token LLM output streaming (use llm-streaming if it exists; otherwise tool-call-flow), or for event-driven architecture and event sourcing (use event-driven-architecture)."
|
|
4
|
+
license: MIT
|
|
5
|
+
allowed-tools: Read Grep
|
|
6
|
+
metadata:
|
|
7
|
+
metadata: "{\"schema_version\":6,\"version\":\"1.0.0\",\"type\":\"capability\",\"category\":\"engineering\",\"domain\":\"engineering/realtime\",\"scope\":\"reference\",\"owner\":\"skill-graph-maintainer\",\"freshness\":\"2026-05-16\",\"drift_check\":\"{\\\\\\\"last_verified\\\\\\\":\\\\\\\"2026-05-16\\\\\\\"}\",\"eval_artifacts\":\"planned\",\"eval_state\":\"unverified\",\"routing_eval\":\"absent\",\"comprehension_state\":\"present\",\"stability\":\"experimental\",\"keywords\":\"[\\\\\\\"streaming\\\\\\\",\\\\\\\"stream\\\\\\\",\\\\\\\"backpressure\\\\\\\",\\\\\\\"SSE\\\\\\\",\\\\\\\"server-sent events\\\\\\\",\\\\\\\"chunked transfer\\\\\\\",\\\\\\\"HTTP/2\\\\\\\",\\\\\\\"WebSocket\\\\\\\",\\\\\\\"WHATWG Streams\\\\\\\",\\\\\\\"ReadableStream\\\\\\\",\\\\\\\"TransformStream\\\\\\\",\\\\\\\"gRPC streaming\\\\\\\",\\\\\\\"RSC streaming\\\\\\\",\\\\\\\"flow control\\\\\\\",\\\\\\\"reactive streams\\\\\\\",\\\\\\\"streaming model output to browser\\\\\\\",\\\\\\\"stream LLM response\\\\\\\"]\",\"triggers\":\"[\\\\\\\"how should this endpoint stream\\\\\\\",\\\\\\\"should this be SSE or WebSocket\\\\\\\",\\\\\\\"is the consumer slow\\\\\\\",\\\\\\\"what's the backpressure story\\\\\\\",\\\\\\\"partial result delivery\\\\\\\"]\",\"examples\":\"[\\\\\\\"design the response shape for an endpoint that returns 50,000 rows incrementally\\\\\\\",\\\\\\\"decide between SSE and WebSocket for a live progress feed\\\\\\\",\\\\\\\"diagnose why a fast producer is exhausting memory when the consumer falls behind\\\\\\\",\\\\\\\"explain why an RSC-streamed page renders out of order and how the boundary resolves\\\\\\\"]\",\"anti_examples\":\"[\\\\\\\"design the JSON shape of a single response payload (use api-design)\\\\\\\",\\\\\\\"implement the model→tool message-history protocol (use tool-call-flow)\\\\\\\",\\\\\\\"design pub-sub topic structure (use event-driven-architecture)\\\\\\\"]\",\"relations\":\"{\\\\\\\"related\\\\\\\":[\\\\\\\"tool-call-flow\\\\\\\",\\\\\\\"client-server-boundary\\\\\\\",\\\\\\\"rendering-models\\\\\\\",\\\\\\\"performance-budgets\\\\\\\",\\\\\\\"api-design\\\\\\\"],\\\\\\\"boundary\\\\\\\":[{\\\\\\\"skill\\\\\\\":\\\\\\\"tool-call-flow\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"tool-call-flow owns the message-history protocol between a model and a tool runtime; streaming-architecture owns the lower-level pattern of incremental value emission with backpressure that streaming tool-call responses are a specialization of.\\\\\\\"},{\\\\\\\"skill\\\\\\\":\\\\\\\"api-design\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"api-design owns the request/response surface for one round-trip; streaming-architecture owns the multi-value-over-time surface where one logical response is delivered as N chunks.\\\\\\\"},{\\\\\\\"skill\\\\\\\":\\\\\\\"rendering-models\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"rendering-models owns the page-rendering taxonomy (CSR/SSR/SSG/RSC); streaming-architecture owns the incremental-delivery primitive that streaming SSR and RSC are built on.\\\\\\\"},{\\\\\\\"skill\\\\\\\":\\\\\\\"client-server-boundary\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"client-server-boundary owns the serialization frontier; streaming-architecture is what makes the frontier traversable over time rather than only once per request.\\\\\\\"}],\\\\\\\"verify_with\\\\\\\":[\\\\\\\"api-design\\\\\\\",\\\\\\\"performance-budgets\\\\\\\"]}\",\"mental_model\":\"|\",\"purpose\":\"|\",\"boundary\":\"|\",\"analogy\":\"A streaming architecture is to data delivery what a conveyor belt is to a factory's order fulfillment — you do not wait for an entire shipment to be assembled before any piece leaves the warehouse; the belt moves boxes one at a time, the loading dock signals when it's full (backpressure), a final marker indicates the shipment is complete (termination), and the receiving truck can start unloading the first box while the last one is still being assembled. A conveyor with no full-dock signal flings boxes onto the floor; a conveyor with no end-marker keeps the truck driver waiting forever.\",\"misconception\":\"|\",\"concept\":\"{\\\\\\\"definition\\\\\\\":\\\\\\\"A streaming architecture is one where a producer emits a sequence of values over time and a consumer processes them incrementally, with an explicit flow-control signal (backpressure) regulating the rate between them. The architecture decouples production speed from consumption speed and makes partial results observable before the producer finishes — or before the producer is even known to terminate.\\\\\\\",\\\\\\\"mental_model\\\\\\\":\\\\\\\"|\\\\\\\",\\\\\\\"purpose\\\\\\\":\\\\\\\"|\\\\\\\",\\\\\\\"boundary\\\\\\\":\\\\\\\"|\\\\\\\",\\\\\\\"taxonomy\\\\\\\":\\\\\\\"|\\\\\\\",\\\\\\\"analogy\\\\\\\":\\\\\\\"|\\\\\\\",\\\\\\\"misconception\\\\\\\":\\\\\\\"|\\\\\\\"}\",\"skill_graph_source_repo\":\"https://github.com/jacob-balslev/skill-graph\",\"skill_graph_protocol\":\"Skill Metadata Protocol v5\",\"skill_graph_project\":\"Skill Graph\",\"skill_graph_canonical_skill\":\"skills/streaming-architecture/SKILL.md\"}"
|
|
8
|
+
skill_graph_source_repo: "https://github.com/jacob-balslev/skill-graph"
|
|
9
|
+
skill_graph_protocol: Skill Metadata Protocol v4
|
|
10
|
+
skill_graph_project: Skill Graph
|
|
11
|
+
skill_graph_canonical_skill: skills/streaming-architecture/SKILL.md
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Streaming Architecture
|
|
15
|
+
|
|
16
|
+
## Coverage
|
|
17
|
+
|
|
18
|
+
The discipline of designing systems that emit and consume sequences of values over time with explicit flow control. Covers the five primitives (producer, stream, consumer, backpressure, termination), the transport mechanisms (HTTP chunked transfer, SSE, WebSocket, HTTP/2 streams, gRPC streaming, WHATWG Streams, Node streams), the directionality and backpressure-model taxonomies, in-stream error semantics, delivery guarantees, the design contract between producer and consumer, and the failure modes that streaming systems exhibit at scale (slow consumer, abandoned consumer, mid-stream disconnect, head-of-line blocking, partial-result correctness).
|
|
19
|
+
|
|
20
|
+
## Philosophy
|
|
21
|
+
|
|
22
|
+
Streaming is the response to a category of problem that batch request/response cannot solve: results that are too big to materialize, too slow to wait for, or too useful at the front to delay until the back arrives. The cost is a more demanding contract between producer and consumer — error semantics get harder, backpressure must be explicit, connections must be managed — but for the problem class it serves, batch is not an inferior streaming; batch is wrong.
|
|
23
|
+
|
|
24
|
+
The deeper philosophy is that streaming is a contract about *time*. The five primitives — producer, stream, consumer, backpressure, termination — are the same whether the transport is an SSE event source, a gRPC bidirectional RPC, a WHATWG ReadableStream piping into a TransformStream, an RSC chunked response, or an LLM emitting tokens. A practitioner who learns the contract once can move between transports at the cost of an encoding translation; a practitioner who learns only one transport's API conflates the contract with its encoding and treats every new streaming surface as a new concept.
|
|
25
|
+
|
|
26
|
+
The discipline of streaming architecture is to know when streaming is the right shape, to design the contract explicitly when it is, and to make backpressure and termination first-class in that contract rather than emergent properties of the transport.
|
|
27
|
+
|
|
28
|
+
## The Five Primitives
|
|
29
|
+
|
|
30
|
+
| Primitive | What it is | What it owns | Failure mode if absent |
|
|
31
|
+
|---|---|---|---|
|
|
32
|
+
| Producer | The source of values | Emission rate, ordering, framing | Stream cannot exist |
|
|
33
|
+
| Stream | The ordered emission channel | Carrying values in order; no random access | Values arrive out of order or lost in transit |
|
|
34
|
+
| Consumer | The processing sink | Processing rate, ack of received values | Producer has no purpose; values discarded |
|
|
35
|
+
| Backpressure | Flow-control signal upstream | Matching producer rate to consumer rate | Memory exhaustion, dropped values, crash |
|
|
36
|
+
| Termination | Explicit end-of-stream signal | Distinguishing "done" from "quiet" | Consumer waits forever; resource leak |
|
|
37
|
+
|
|
38
|
+
Any streaming system can be analyzed as: who is the producer, what is the stream's framing, who is the consumer, how does backpressure travel upstream, and how is termination signaled. A streaming system that has no answer for any of these is incomplete and will fail under load.
|
|
39
|
+
|
|
40
|
+
## Transport Comparison
|
|
41
|
+
|
|
42
|
+
| Transport | Directionality | Framing | Backpressure | Reconnect | Typical use |
|
|
43
|
+
|---|---|---|---|---|---|
|
|
44
|
+
| HTTP chunked transfer (RFC 9112) | Server→client | Length-prefixed chunks | TCP-level only | None | Large response body of unknown length |
|
|
45
|
+
| Server-Sent Events (HTML LS, EventSource) | Server→client | Newline-delimited `event:`/`data:` lines | TCP-level only | Built-in via `Last-Event-ID` | Live feeds, progress, LLM token streams |
|
|
46
|
+
| WebSocket (RFC 6455) | Bidirectional | Length-prefixed frames | Application-level | None (manual) | Chat, real-time games, collaborative editing |
|
|
47
|
+
| HTTP/2 streams (RFC 9113) | Bidirectional per stream | Per-stream framing with WINDOW_UPDATE flow control | Built-in via WINDOW_UPDATE | None (manual) | gRPC transport, multiplexed APIs |
|
|
48
|
+
| gRPC streaming | Server/client/bidi | Protobuf-framed values | Built-in via HTTP/2 flow control | Manual | Typed RPC, microservice streams |
|
|
49
|
+
| WHATWG ReadableStream | In-process | Reader queues | Built-in via pull model | N/A | Browser-side stream composition |
|
|
50
|
+
| Node.js Readable | In-process | Object or buffer chunks | Built-in via highWaterMark | N/A | Server-side file/network plumbing |
|
|
51
|
+
|
|
52
|
+
Selection rule: pick directionality first (one-way → SSE or HTTP chunked; two-way → WebSocket or gRPC bidi), then framing needs (binary structured → gRPC or WebSocket; text events → SSE; opaque bytes → HTTP chunked), then infrastructure compatibility (HTTP/1.1 proxies often break WebSocket and SSE; HTTP/2 proxies are friendlier).
|
|
53
|
+
|
|
54
|
+
## Server-Sent Events — The Streaming Default For Server→Client
|
|
55
|
+
|
|
56
|
+
SSE is the lowest-ceremony, highest-compatibility transport for server→client streaming. The HTML Living Standard `EventSource` API ships in every modern browser.
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
GET /stream HTTP/1.1
|
|
60
|
+
Accept: text/event-stream
|
|
61
|
+
|
|
62
|
+
HTTP/1.1 200 OK
|
|
63
|
+
Content-Type: text/event-stream
|
|
64
|
+
Cache-Control: no-store
|
|
65
|
+
|
|
66
|
+
event: token
|
|
67
|
+
data: {"id":1,"text":"Hello"}
|
|
68
|
+
|
|
69
|
+
event: token
|
|
70
|
+
data: {"id":2,"text":" world"}
|
|
71
|
+
|
|
72
|
+
event: done
|
|
73
|
+
data: {}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Properties:
|
|
77
|
+
- One-way (server→client). Client can only initiate the connection; once established, only the server sends.
|
|
78
|
+
- UTF-8 text events with `event:`, `data:`, and `id:` fields.
|
|
79
|
+
- Built-in reconnect via `Last-Event-ID` header on the resume request.
|
|
80
|
+
- Works through HTTP/1.1 proxies; no upgrade handshake.
|
|
81
|
+
- No backpressure beyond TCP-level flow control — application-level pacing must be designed in if the producer can outrun the consumer.
|
|
82
|
+
|
|
83
|
+
For LLM token streaming, progress bars, status feeds, dashboards, and any one-way live update channel, SSE is the right starting point. Move to WebSocket only if bidirectionality is required.
|
|
84
|
+
|
|
85
|
+
## WebSocket — When Bidirectionality Is Required
|
|
86
|
+
|
|
87
|
+
WebSocket (RFC 6455) is a bidirectional, framed, binary-or-text protocol upgraded from HTTP. Both ends can send at any time.
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
GET /ws HTTP/1.1
|
|
91
|
+
Upgrade: websocket
|
|
92
|
+
Connection: Upgrade
|
|
93
|
+
Sec-WebSocket-Key: ...
|
|
94
|
+
Sec-WebSocket-Version: 13
|
|
95
|
+
|
|
96
|
+
HTTP/1.1 101 Switching Protocols
|
|
97
|
+
Upgrade: websocket
|
|
98
|
+
Connection: Upgrade
|
|
99
|
+
Sec-WebSocket-Accept: ...
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Properties:
|
|
103
|
+
- Full-duplex framed message protocol.
|
|
104
|
+
- Application-level backpressure required — neither end's send rate is automatically matched to the other end's receive rate.
|
|
105
|
+
- No built-in reconnect; the application must handle close codes and resume manually.
|
|
106
|
+
- Sensitive to HTTP/1.1 intermediaries that buffer or close idle connections.
|
|
107
|
+
|
|
108
|
+
For collaborative editing, multiplayer games, chat, and any interaction where both sides need to send unsolicited messages, WebSocket is the right transport. For one-way server-driven updates, it is more machinery than necessary and SSE is usually a better fit.
|
|
109
|
+
|
|
110
|
+
## Backpressure In Detail
|
|
111
|
+
|
|
112
|
+
The slow-consumer failure mode is the most consequential streaming failure. A producer that emits at 1000 events/sec and a consumer that processes at 100/sec produces 900 events/sec of accumulation. After one minute, the buffer holds 54,000 events; after one hour, 3.24 million. Without backpressure, this exhausts memory.
|
|
113
|
+
|
|
114
|
+
| Backpressure strategy | How it works | Trade-off |
|
|
115
|
+
|---|---|---|
|
|
116
|
+
| Pull (consumer asks) | Producer emits only when consumer calls `read()` | Implicit; correct by construction; requires pull-capable producer |
|
|
117
|
+
| Credit-based push | Consumer signals "I can accept N more"; producer emits up to N then waits | Explicit; works over network; adds round-trip latency |
|
|
118
|
+
| Buffered push with drop | Producer emits freely; buffer drops oldest/newest on overflow | Bounded memory; lossy; only acceptable when loss is OK |
|
|
119
|
+
| Buffered push with block | Producer emits freely; producer blocks when buffer full | Bounded memory; propagates slowness upstream; only works in-process |
|
|
120
|
+
| Sampling | Consumer samples N values/sec, discarding the rest | Lossy by design; correct for telemetry; wrong for correctness streams |
|
|
121
|
+
|
|
122
|
+
For each new streaming endpoint, the answer to "what happens when the consumer is slower than the producer?" must be one of these strategies — explicitly, not by accident.
|
|
123
|
+
|
|
124
|
+
## Termination And Resume
|
|
125
|
+
|
|
126
|
+
Termination is a distinct message, not the absence of new values. A consumer that interprets a 10-second silence as "the stream ended" will be wrong on any production network. Explicit termination signals:
|
|
127
|
+
|
|
128
|
+
| Transport | Termination signal |
|
|
129
|
+
|---|---|
|
|
130
|
+
| HTTP chunked | Zero-length chunk |
|
|
131
|
+
| SSE | Server closes the connection; client may auto-reconnect |
|
|
132
|
+
| WebSocket | Close frame with status code |
|
|
133
|
+
| gRPC | Status message on the trailer |
|
|
134
|
+
| WHATWG ReadableStream | Reader's `read()` returns `{done: true}` |
|
|
135
|
+
|
|
136
|
+
Resume after disconnect is a separate concern. SSE has it built in (`Last-Event-ID`); WebSocket requires application-level resume tokens; gRPC offers reconnect but not exactly-once across reconnects. A streaming consumer must be designed for "the connection dropped at value 4,732; reconnect and continue at 4,733" if that semantic matters.
|
|
137
|
+
|
|
138
|
+
## In-Stream Errors
|
|
139
|
+
|
|
140
|
+
| Strategy | When to use | Cost |
|
|
141
|
+
|---|---|---|
|
|
142
|
+
| Fail-fast (terminate stream on error) | The error invalidates everything after | Loses partial-results value of streaming |
|
|
143
|
+
| In-band error value | Errors are part of the value type (e.g., a tool-call result with an error payload) | Forces consumers to handle two value shapes |
|
|
144
|
+
| Out-of-band signal (HTTP trailer, WebSocket close code) | The stream is a sequence of successful values; errors are exceptional | Consumer must watch two channels |
|
|
145
|
+
|
|
146
|
+
The choice depends on whether the consumer can usefully proceed past an error. For LLM token streams, an error mid-generation is usually fatal — fail-fast. For a search-results stream, one row's permission error need not stop the others — in-band errors. For a long-lived telemetry stream, errors are out-of-band by convention.
|
|
147
|
+
|
|
148
|
+
## Streaming In Modern Web Frameworks
|
|
149
|
+
|
|
150
|
+
| Framework feature | Underlying mechanism |
|
|
151
|
+
|---|---|
|
|
152
|
+
| React Server Components streaming | HTTP chunked transfer; framework-specific chunk format |
|
|
153
|
+
| Next.js Suspense streaming | Streaming SSR over HTTP chunked transfer |
|
|
154
|
+
| Remix loader streaming with `defer()` | Promise serialization over the response stream |
|
|
155
|
+
| `fetch()` response body | WHATWG ReadableStream wrapping the network response |
|
|
156
|
+
| Node `res.write()` / `res.end()` | Node Readable on the response object |
|
|
157
|
+
| OpenAI/Anthropic/Gemini LLM streaming SDKs | SSE over HTTP; SDK parses event frames into iterable values |
|
|
158
|
+
|
|
159
|
+
Each of these is the same five-primitive contract dressed in a framework's API. The framework adds typing, suspense integration, error boundary handling, and ergonomic composition — but the underlying contract is the streaming-architecture primitive.
|
|
160
|
+
|
|
161
|
+
## Verification
|
|
162
|
+
|
|
163
|
+
After applying this skill, verify:
|
|
164
|
+
- [ ] Every streaming endpoint has a named answer for: who is the producer, who is the consumer, how is the stream framed, how does backpressure travel upstream, how is termination signaled.
|
|
165
|
+
- [ ] No long-lived connection assumes silence means "done" — termination is always a distinct signal.
|
|
166
|
+
- [ ] No streaming consumer materializes the full stream into a collection unless the stream is known-bounded and small.
|
|
167
|
+
- [ ] Backpressure strategy is explicit, not emergent: pull, credit-based push, drop-on-overflow, or block-on-overflow are named choices.
|
|
168
|
+
- [ ] Mid-stream errors have a defined encoding (fail-fast, in-band, or out-of-band) — they are not left to "whatever the transport does."
|
|
169
|
+
- [ ] If reconnect/resume matters for correctness, the protocol carries enough state (last-event-id, resume token) for the consumer to resume without gaps or duplicates.
|
|
170
|
+
- [ ] SSE is used for one-way; WebSocket for bidirectional; gRPC streaming for typed inter-service streams — choices are justified by directionality and framing, not by familiarity.
|
|
171
|
+
- [ ] The streaming endpoint's behavior under a deliberately slow consumer has been tested, not assumed.
|
|
172
|
+
|
|
173
|
+
## Do NOT Use When
|
|
174
|
+
|
|
175
|
+
| Instead of this skill | Use | Why |
|
|
176
|
+
|---|---|---|
|
|
177
|
+
| Designing the message-history protocol between a model and a tool runtime | `tool-call-flow` | tool-call-flow is a specialization of streaming for the model↔runtime cycle; this skill is the underlying primitive |
|
|
178
|
+
| Choosing or designing event-driven and pub-sub architectures | `event-driven-architecture` | event-driven owns named-occurrence routing; streaming owns ordered-emission channels |
|
|
179
|
+
| Designing the JSON shape of a single response payload | `api-design` | api-design owns request/response surfaces; streaming-architecture owns multi-value-over-time surfaces |
|
|
180
|
+
| Implementing realtime collaborative updates with CRDT/OT | dedicated collab/sync skill | streaming is the transport; collaborative state has its own design layer above |
|
|
181
|
+
| Designing the page-level rendering taxonomy | `rendering-models` | rendering-models owns CSR/SSR/SSG/RSC; this skill owns the streaming primitive those depend on |
|
|
182
|
+
|
|
183
|
+
## Key Sources
|
|
184
|
+
|
|
185
|
+
- IETF. [RFC 9112 — HTTP/1.1, § 7.1 Chunked Transfer Coding](https://www.rfc-editor.org/rfc/rfc9112#name-chunked-transfer-coding). The base mechanism for streaming an HTTP body of unknown length.
|
|
186
|
+
- IETF. [RFC 9113 — HTTP/2, § 5 Streams and Multiplexing](https://www.rfc-editor.org/rfc/rfc9113#name-streams-and-multiplexing). HTTP/2's stream primitive and per-stream flow control (WINDOW_UPDATE frames).
|
|
187
|
+
- IETF. [RFC 6455 — The WebSocket Protocol](https://www.rfc-editor.org/rfc/rfc6455). The canonical specification for the bidirectional framed-message protocol.
|
|
188
|
+
- WHATWG. [HTML Living Standard — Server-Sent Events](https://html.spec.whatwg.org/multipage/server-sent-events.html). The EventSource API and the `text/event-stream` protocol.
|
|
189
|
+
- WHATWG. [Streams Living Standard](https://streams.spec.whatwg.org/). ReadableStream, WritableStream, TransformStream — the in-browser streaming primitives.
|
|
190
|
+
- Node.js. [Stream API documentation](https://nodejs.org/api/stream.html). Readable, Writable, Duplex, Transform; backpressure via highWaterMark and `pipe()`.
|
|
191
|
+
- gRPC Authors. [gRPC Concepts — RPC Lifecycle](https://grpc.io/docs/what-is-grpc/core-concepts/). Server-streaming, client-streaming, and bidirectional-streaming RPC modes.
|
|
192
|
+
- Reactive Streams. [Reactive Streams Specification](https://www.reactive-streams.org/). The cross-language specification for asynchronous stream processing with non-blocking backpressure — the basis of Akka Streams, RxJava, Project Reactor.
|
|
193
|
+
- React. [Streaming Server Rendering with Suspense (React 18 announcement)](https://react.dev/reference/react-dom/server). The framework-level streaming model that Next.js App Router and RSC build on.
|
|
194
|
+
- Mozilla Developer Network. [Using readable streams](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams). Practical reference for browser-side stream consumption.
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: summarization
|
|
3
|
+
description: "Prose condensation and abstraction patterns for AI agents: extracting key findings from long reports, writing executive summaries, creating TLDRs, compressing context for handoffs between agents, progressive summarization (literature notes → permanent notes), audit report condensation, and the discipline of deciding what to keep and what to cut when space is limited. Use when summarizing session findings, writing wrap reports, condensing research for memory files, creating executive summaries of audits, compressing context before agent handoffs, or distilling long documents into actionable briefs. Do NOT use for data compression algorithms (use compression), context window budget management (use token-efficiency), or document structure (use editorial-standards)."
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: "Markdown, Git, agent-skill runtimes"
|
|
6
|
+
allowed-tools: Read Grep Bash
|
|
7
|
+
metadata:
|
|
8
|
+
metadata: "{\"schema_version\":6,\"version\":\"1.0.0\",\"type\":\"capability\",\"category\":\"agent\",\"domain\":\"agent/cognition\",\"scope\":\"reference\",\"owner\":\"skill-graph-maintainer\",\"freshness\":\"2026-03-28\",\"drift_check\":\"{\\\\\\\"last_verified\\\\\\\":\\\\\\\"2026-03-28\\\\\\\"}\",\"eval_artifacts\":\"planned\",\"eval_state\":\"unverified\",\"routing_eval\":\"absent\",\"stability\":\"experimental\",\"keywords\":\"[\\\\\\\"summarization\\\\\\\",\\\\\\\"summary\\\\\\\",\\\\\\\"TLDR\\\\\\\",\\\\\\\"executive summary\\\\\\\",\\\\\\\"condensation\\\\\\\",\\\\\\\"abstract\\\\\\\",\\\\\\\"distill\\\\\\\",\\\\\\\"key findings\\\\\\\",\\\\\\\"brief\\\\\\\",\\\\\\\"compress text\\\\\\\",\\\\\\\"context handoff\\\\\\\",\\\\\\\"progressive summarization\\\\\\\"]\",\"triggers\":\"[\\\\\\\"summarization-skill\\\\\\\",\\\\\\\"summary-skill\\\\\\\"]\",\"relations\":\"{\\\\\\\"related\\\\\\\":[\\\\\\\"context-management\\\\\\\",\\\\\\\"writing-humanizer\\\\\\\"],\\\\\\\"boundary\\\\\\\":[\\\\\\\"compression\\\\\\\",\\\\\\\"context-window\\\\\\\"],\\\\\\\"verify_with\\\\\\\":[\\\\\\\"evaluation\\\\\\\"]}\",\"portability\":\"{\\\\\\\"readiness\\\\\\\":\\\\\\\"scripted\\\\\\\",\\\\\\\"targets\\\\\\\":[\\\\\\\"skill-md\\\\\\\"]}\",\"lifecycle\":\"{\\\\\\\"stale_after_days\\\\\\\":90,\\\\\\\"review_cadence\\\\\\\":\\\\\\\"quarterly\\\\\\\"}\",\"skill_graph_source_repo\":\"https://github.com/jacob-balslev/skill-graph\",\"skill_graph_protocol\":\"Skill Metadata Protocol v5\",\"skill_graph_project\":\"Skill Graph\",\"skill_graph_canonical_skill\":\"skills/summarization/SKILL.md\"}"
|
|
9
|
+
skill_graph_source_repo: "https://github.com/jacob-balslev/skill-graph"
|
|
10
|
+
skill_graph_protocol: Skill Metadata Protocol v4
|
|
11
|
+
skill_graph_project: Skill Graph
|
|
12
|
+
skill_graph_canonical_skill: skills/summarization/SKILL.md
|
|
13
|
+
---
|
|
14
|
+
# Summarization
|
|
15
|
+
|
|
16
|
+
## Domain Context
|
|
17
|
+
|
|
18
|
+
**What is this skill?** Prose condensation and abstraction patterns for AI agents: extracting key findings from long reports, writing executive summaries, creating TLDRs, compressing context for handoffs between agents, progressive summarization (literature notes → permanent notes), audit report condensation, and the discipline of deciding what to keep and what to cut when space is limited. Use when summarizing session findings, writing wrap reports, condensing research for memory files, creating executive summaries of audits, compressing context before agent handoffs, or distilling long documents into actionable briefs. Do NOT use for data compression algorithms (use compression), context window budget management (use token-efficiency), or document structure (use editorial-standards).
|
|
19
|
+
|
|
20
|
+
> Summarization is not shortening. It is the skill of identifying what matters and discarding what doesn't — while preserving the causal chain that makes the remaining content useful.
|
|
21
|
+
|
|
22
|
+
## Coverage
|
|
23
|
+
|
|
24
|
+
Extractive summarization (pulling key sentences verbatim), abstractive summarization (rewriting in fewer words while preserving meaning), progressive summarization (Tiago Forte's 3-layer highlight method adapted for agent work), executive summary structure (situation → findings → recommendations → next steps), TLDR generation (one-sentence distillation of a complex document), session wrap condensation (converting 50+ findings into a prioritized summary), research-to-memory compression (distilling task research into memory-file-sized briefs), agent handoff summaries (what the next agent needs to know, nothing else), audit report condensation (from raw findings to scored summary with evidence), and the information-theoretic principle of lossy compression — what you choose to lose defines the quality of the summary.
|
|
25
|
+
|
|
26
|
+
## Philosophy
|
|
27
|
+
|
|
28
|
+
Every agent in this system produces more text than any human will read. Session logs run to thousands of lines. Research files contain every detail an agent discovered. Audit reports list every finding at every severity level. Without summarization discipline, this output becomes noise — technically complete but practically useless.
|
|
29
|
+
|
|
30
|
+
The failure mode is not missing information but buried information. A 500-line research file that contains the answer on line 347 is worse than a 50-line summary that puts the answer in the first paragraph. A wrap report that lists 30 findings without priority is worse than one that highlights the 3 critical findings and links to the rest.
|
|
31
|
+
|
|
32
|
+
Summarization is lossy by definition. The skill is in choosing *what to lose*. The rules below encode that choice: keep decisions and their rationale, keep blockers and their workarounds, keep numbers and their context — drop process narration, drop tool output, drop hedging.
|
|
33
|
+
|
|
34
|
+
## When to Use
|
|
35
|
+
|
|
36
|
+
- Writing /workflow/wrap session summaries
|
|
37
|
+
- Creating memory topic files from research sessions
|
|
38
|
+
- Condensing task-researcher output for task-solver consumption
|
|
39
|
+
- Writing executive summaries of audit reports
|
|
40
|
+
- Creating TLDRs for long Linear issue descriptions
|
|
41
|
+
- Compressing context for agent-to-agent handoffs
|
|
42
|
+
- Distilling board meeting minutes into decisions + action items
|
|
43
|
+
- Summarizing git log history for PR descriptions
|
|
44
|
+
- Converting verbose tool output into human-readable findings
|
|
45
|
+
|
|
46
|
+
## Cross-Domain Synergy
|
|
47
|
+
|
|
48
|
+
- **token-efficiency**: Manages the *budget* for context (how many tokens). Summarization provides the *technique* for fitting content into that budget.
|
|
49
|
+
- **context-management**: Controls what enters and exits a session. Summarization provides the compression technique when eviction isn't enough.
|
|
50
|
+
- **editorial-standards**: Defines what good documents look like. Summarization defines how to make a good *shorter* document from a longer one.
|
|
51
|
+
- **writing-humanizer**: Ensures summaries don't sound robotic. Summarization focuses on *what to include*; writing-humanizer focuses on *how it reads*.
|
|
52
|
+
- **memory-gardener**: Maintains memory files. Summarization provides the technique for compressing session findings into memory-sized entries.
|
|
53
|
+
- **compression**: Covers algorithmic data compression (Zstd, Brotli). Summarization covers *prose* compression — fundamentally different because it requires semantic judgment.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 1. The Summarization Hierarchy
|
|
58
|
+
|
|
59
|
+
Not all summaries serve the same purpose. Match the technique to the audience and constraint.
|
|
60
|
+
|
|
61
|
+
| Level | Name | Length | Keeps | Drops | Use For |
|
|
62
|
+
|-------|------|--------|-------|-------|---------|
|
|
63
|
+
| L1 | **TLDR** | 1-2 sentences | The single most important takeaway | Everything else | Slack messages, Linear comments, commit subjects |
|
|
64
|
+
| L2 | **Executive Summary** | 3-8 sentences | Situation, key findings, recommendation | Evidence, process, reasoning | Memory files, PR descriptions, wrap reports |
|
|
65
|
+
| L3 | **Brief** | 1-2 paragraphs | Findings + evidence + reasoning | Verbose tool output, narration | Task handoffs, research summaries |
|
|
66
|
+
| L4 | **Condensed Report** | 1-2 pages | Full findings with priority, evidence refs | Raw data, duplicates, process log | Audit reports, board meeting summaries |
|
|
67
|
+
|
|
68
|
+
**Rule: Always specify which level you're writing.** "Summarize this" is ambiguous. "Write an L2 executive summary" is actionable.
|
|
69
|
+
|
|
70
|
+
## 2. What to Keep vs What to Drop
|
|
71
|
+
|
|
72
|
+
**Always keep:**
|
|
73
|
+
- Decisions and their rationale ("Chose X because Y")
|
|
74
|
+
- Blockers and their workarounds or status
|
|
75
|
+
- Numbers with context (counts, scores, percentages)
|
|
76
|
+
- Action items with owners
|
|
77
|
+
- Surprising or non-obvious findings
|
|
78
|
+
- Links to evidence (file paths, URLs, line numbers)
|
|
79
|
+
|
|
80
|
+
**Always drop:**
|
|
81
|
+
- Process narration ("First I read the file, then I searched for...")
|
|
82
|
+
- Tool invocation details ("I ran grep and found...")
|
|
83
|
+
- Hedging and qualification ("It's worth noting that perhaps...")
|
|
84
|
+
- Repeated information (say it once, in the right place)
|
|
85
|
+
- Obvious context the reader already has
|
|
86
|
+
- Intermediate reasoning that led to the final conclusion
|
|
87
|
+
|
|
88
|
+
## 3. Executive Summary Structure
|
|
89
|
+
|
|
90
|
+
The executive summary is the most common summary type in this system (memory files, wrap reports, PR descriptions).
|
|
91
|
+
|
|
92
|
+
**Four-part structure:**
|
|
93
|
+
1. **Situation** (1 sentence): What was the task/context?
|
|
94
|
+
2. **Findings** (2-4 sentences): What did we discover or accomplish?
|
|
95
|
+
3. **Recommendation** (1-2 sentences): What should happen next?
|
|
96
|
+
4. **Evidence** (optional, linked): Where can the reader verify?
|
|
97
|
+
|
|
98
|
+
**Example:**
|
|
99
|
+
> Audited the 12 language-related skills for gap coverage. Found 4 clear gaps: microcopy (highest impact — no owner for functional UI text), i18n (linguistics has awareness but no implementation patterns), summarization (critical for agent context handoffs but unowned), and content strategy (the "what to write" layer above copywriting). Recommend creating all 4 as shared skills in the quality/meta/display layers. See gap analysis in conversation context.
|
|
100
|
+
|
|
101
|
+
## 4. Progressive Summarization for Agent Work
|
|
102
|
+
|
|
103
|
+
Adapted from Tiago Forte's method for agent memory:
|
|
104
|
+
|
|
105
|
+
- **Layer 0**: Raw output (session logs, tool results, full research)
|
|
106
|
+
- **Layer 1**: Highlighted key passages (extractive — pull the important sentences)
|
|
107
|
+
- **Layer 2**: Bold the key phrases within highlights (identify the core claims)
|
|
108
|
+
- **Layer 3**: Write an executive summary in your own words (abstractive)
|
|
109
|
+
|
|
110
|
+
**For memory files:** Always store Layer 3 (the executive summary) with a link to Layer 0 (the raw source) if it still exists. Never store Layer 0 directly in memory — it's too large and decays into noise.
|
|
111
|
+
|
|
112
|
+
## 5. Agent Handoff Summaries
|
|
113
|
+
|
|
114
|
+
When one agent passes work to another, the summary must answer exactly these questions:
|
|
115
|
+
|
|
116
|
+
1. **What was done?** (completed work, in one sentence)
|
|
117
|
+
2. **What's left?** (remaining work, as a list)
|
|
118
|
+
3. **What's blocked?** (if anything, with the specific blocker)
|
|
119
|
+
4. **What's surprising?** (non-obvious findings that affect the remaining work)
|
|
120
|
+
5. **Where's the evidence?** (file paths, Linear issue IDs, commit hashes)
|
|
121
|
+
|
|
122
|
+
Anything not in these 5 categories is noise for the receiving agent.
|
|
123
|
+
|
|
124
|
+
## 6. Audit Report Condensation
|
|
125
|
+
|
|
126
|
+
Raw audit findings → prioritized summary:
|
|
127
|
+
|
|
128
|
+
1. **Count and categorize**: "Found 23 findings: 3 critical, 7 high, 8 medium, 5 low"
|
|
129
|
+
2. **Lead with critical**: List critical findings first with one-line descriptions
|
|
130
|
+
3. **Group by theme**: Not by file or discovery order, but by the *type* of problem
|
|
131
|
+
4. **Score if applicable**: "Overall score: 36/50" with dimension breakdown
|
|
132
|
+
5. **Link to raw findings**: The condensed report links to the full findings file
|
|
133
|
+
|
|
134
|
+
## 7. Anti-Patterns
|
|
135
|
+
|
|
136
|
+
| Anti-Pattern | Why It's Bad | Fix |
|
|
137
|
+
|-------------|-------------|-----|
|
|
138
|
+
| "First I did X, then Y, then Z" | Process narration wastes reader time | State the outcome, not the journey |
|
|
139
|
+
| Including all findings at equal weight | Reader can't distinguish critical from trivial | Prioritize by severity/impact |
|
|
140
|
+
| Summarizing by shortening every section proportionally | Produces a uniformly shallow version | Cut entire low-value sections, keep high-value sections intact |
|
|
141
|
+
| "As mentioned above" / "As noted earlier" | Self-referential text that doesn't survive extraction | Make each section standalone |
|
|
142
|
+
| Hedging in summaries | "It might be worth considering" wastes the reader's attention | State the recommendation directly |
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
## Do NOT Use When
|
|
146
|
+
|
|
147
|
+
| Instead of this skill | Use | Why |
|
|
148
|
+
|---|---|---|
|
|
149
|
+
| (To be filled during next audit pass) | — | — |
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
## Verification
|
|
153
|
+
|
|
154
|
+
After applying this skill, verify:
|
|
155
|
+
- [ ] Changes follow the patterns documented above
|
|
156
|
+
- [ ] No regressions in affected functionality
|