@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,136 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: intent-recognition
|
|
3
|
+
description: "Use BEFORE any tool call that could modify state, touch sensitive targets, rewrite history, install dependencies, publish packages, or expose credentials/environment data. Classifies intent into Passive/Read, Reconnaissance, Modification, or Destructive/Irreversible using operation type plus target sensitivity, then runs Identify / Confirm / Verify before action. Do NOT use for deciding what code to write, executing already-classified work, reactive post-execution guardrails, or defining upstream governance policy."
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: "Runtime-agnostic. The four-tier classification, target-content rule, and Identify/Confirm/Verify sequence apply to any agent harness with tool execution — Claude Code, OpenCode, Cursor, Aider, Copilot Workspace, custom MCP-based agents, or any LLM with shell access."
|
|
6
|
+
allowed-tools: Read Grep
|
|
7
|
+
metadata:
|
|
8
|
+
metadata: "{\"schema_version\":6,\"version\":\"1.0.0\",\"type\":\"capability\",\"category\":\"engineering\",\"domain\":\"ai-engineering/safety\",\"scope\":\"portable\",\"owner\":\"skill-graph-maintainer\",\"freshness\":\"2026-05-06\",\"drift_check\":\"{\\\\\\\"last_verified\\\\\\\":\\\\\\\"2026-05-06\\\\\\\"}\",\"eval_artifacts\":\"planned\",\"eval_state\":\"unverified\",\"routing_eval\":\"absent\",\"stability\":\"experimental\",\"keywords\":\"[\\\\\\\"intent recognition\\\\\\\",\\\\\\\"pre-execution risk classification\\\\\\\",\\\\\\\"four tier action taxonomy\\\\\\\",\\\\\\\"passive read reconnaissance modification destructive\\\\\\\",\\\\\\\"identify confirm verify sequence\\\\\\\",\\\\\\\"destructive operation classification\\\\\\\",\\\\\\\"credential read is reconnaissance\\\\\\\",\\\\\\\"git reset hard is destructive\\\\\\\",\\\\\\\"force push is destructive\\\\\\\",\\\\\\\"lockfile install is high impact\\\\\\\",\\\\\\\"non-destructive alternative\\\\\\\",\\\\\\\"agent action risk assessment\\\\\\\",\\\\\\\"tool call pre-execution gate\\\\\\\",\\\\\\\"reading dotenv is not passive\\\\\\\",\\\\\\\"history rewriting is irreversible\\\\\\\",\\\\\\\"state-changing tool call\\\\\\\",\\\\\\\"agent safety pre-execution\\\\\\\",\\\\\\\"target content elevates tier\\\\\\\"]\",\"examples\":\"[\\\\\\\"the agent is about to run `git reset --hard` — what tier is this and what's the safer alternative?\\\\\\\",\\\\\\\"is reading the `.env` file a Passive operation since nothing mutates?\\\\\\\",\\\\\\\"I'm about to install a new package — what tier does that fit and why?\\\\\\\",\\\\\\\"force-push to main looks like 'just a push' — should I classify it as Modification?\\\\\\\",\\\\\\\"before running `DELETE FROM orders WHERE …`, what's the verification sequence?\\\\\\\",\\\\\\\"the agent classified everything as Modification because there's no exception for credentials\\\\\\\",\\\\\\\"what trigger phrases should activate this skill in our harness?\\\\\\\"]\",\"anti_examples\":\"[\\\\\\\"design the deterministic safety hook that blocks destructive commands\\\\\\\",\\\\\\\"decide whether to use a switch or a chain of ifs\\\\\\\",\\\\\\\"actually execute the migration after we've classified the risk\\\\\\\",\\\\\\\"scan this repo for OWASP top 10 vulnerabilities\\\\\\\",\\\\\\\"review this AI-generated PR for correctness\\\\\\\",\\\\\\\"the loop is stalling — what's the steering signal\\\\\\\"]\",\"relations\":\"{\\\\\\\"boundary\\\\\\\":[{\\\\\\\"skill\\\\\\\":\\\\\\\"owasp-security\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"owasp-security is a domain audit against a known threat list; intent-recognition is the per-action risk classification that runs immediately before a tool call regardless of domain\\\\\\\"},{\\\\\\\"skill\\\\\\\":\\\\\\\"debugging\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"debugging investigates a failure that has already happened; intent-recognition prevents one class of failure (destructive action mis-classification) from happening at all\\\\\\\"},{\\\\\\\"skill\\\\\\\":\\\\\\\"code-review\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"code-review evaluates code-quality of an artefact; intent-recognition evaluates risk of an action about to be performed by a tool\\\\\\\"},{\\\\\\\"skill\\\\\\\":\\\\\\\"version-control\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"version-control owns the discipline of using git well; intent-recognition specifically classifies which git commands are safe vs destructive at the moment of execution\\\\\\\"},{\\\\\\\"skill\\\\\\\":\\\\\\\"testing-strategy\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"testing-strategy decides what to test proactively; intent-recognition gates one specific tool call from firing without classification\\\\\\\"}],\\\\\\\"related\\\\\\\":[\\\\\\\"owasp-security\\\\\\\",\\\\\\\"version-control\\\\\\\",\\\\\\\"debugging\\\\\\\"],\\\\\\\"verify_with\\\\\\\":[\\\\\\\"owasp-security\\\\\\\"]}\",\"portability\":\"{\\\\\\\"readiness\\\\\\\":\\\\\\\"scripted\\\\\\\",\\\\\\\"targets\\\\\\\":[\\\\\\\"skill-md\\\\\\\"]}\",\"lifecycle\":\"{\\\\\\\"stale_after_days\\\\\\\":365,\\\\\\\"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/intent-recognition/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/intent-recognition/SKILL.md
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Intent Recognition
|
|
16
|
+
|
|
17
|
+
## Coverage
|
|
18
|
+
|
|
19
|
+
Pre-execution action classification for any agent that can call tools with side effects. Defines four tiers — Passive/Read, Reconnaissance, Modification, Destructive/Irreversible — with the operation-and-target rule that determines tier (the target's sensitivity can elevate the tier above what the operation alone implies; reading a `.env` file is Reconnaissance even though no state changes). Specifies the three-step verification sequence (Identify the action and its tier, Confirm the rationale against the active plan, Verify whether a non-destructive alternative exists) that runs before any tier-3 or tier-4 action fires. Names the trigger phrases that should activate the skill. Catalogs the anti-patterns: classifying credential reads as Passive, treating package installs as Passive, skipping classification for familiar commands, classifying force-push as Modification, proceeding with Destructive actions without checking alternatives.
|
|
20
|
+
|
|
21
|
+
## Philosophy
|
|
22
|
+
|
|
23
|
+
Agents execute tool calls at machine speed with no undo. Without an explicit pre-execution classification step, `git reset --hard` runs with the same ease as `cat README.md`. The cost of a single misclassified destructive action — wiped uncommitted work, dropped database, force-pushed branch — exceeds the cost of _every_ classification step the agent will ever run. The math is simple: classification is cheap, regret is expensive.
|
|
24
|
+
|
|
25
|
+
The most subtle failure mode is _target-content elevation_. Reading a file is a Passive operation in the abstract. Reading a `.env` file is Reconnaissance because the _target_ is sensitive — credentials, connection strings, API keys. The tier comes from the combination of operation _and_ target, not the operation alone. A classifier that looks only at the verb misses half the risk surface.
|
|
26
|
+
|
|
27
|
+
The Identify / Confirm / Verify sequence is the second non-negotiable. _Identify_ surfaces the agent's own reasoning about the action; if the agent can't state the tier and the rationale, it shouldn't fire the tool. _Confirm_ tests the action against the agreed plan — drift between "what we agreed to do" and "what the next tool call will do" is itself a signal. _Verify_ asks whether a safer alternative exists and is the step where most preventable destructive actions get caught.
|
|
28
|
+
|
|
29
|
+
## 1. The Four-Tier Taxonomy
|
|
30
|
+
|
|
31
|
+
| Tier | Name | Examples | Risk |
|
|
32
|
+
| ---- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------- |
|
|
33
|
+
| 1 | **Passive / Read** | View a non-sensitive file, list a directory, grep for a string | Low |
|
|
34
|
+
| 2 | **Reconnaissance** | Read `.env`, view a `credentials.*` file, run a SQL `SELECT` against a sensitive table, list installed packages and versions | Moderate (information exposure even without state change) |
|
|
35
|
+
| 3 | **Modification** | Write or edit a source file, run a routine `git commit`, run a non-destructive `INSERT` or `UPDATE` with a `WHERE` clause | Standard |
|
|
36
|
+
| 4 | **Destructive / Irreversible** | `git reset --hard`, `git push --force`, `DROP TABLE`, `TRUNCATE`, `DELETE FROM ...` without `WHERE`, `rm -rf`, `npm publish`, credential rotation, dependency lockfile rewrite | Critical — requires explicit justification |
|
|
37
|
+
|
|
38
|
+
Every tool call gets a tier before it fires. No exceptions, including for "familiar" commands.
|
|
39
|
+
|
|
40
|
+
## 2. Operation-vs-Target Rule
|
|
41
|
+
|
|
42
|
+
The tier comes from the combination of _operation_ and _target_. The same operation has a different tier depending on what it touches.
|
|
43
|
+
|
|
44
|
+
| Operation | Generic target | Sensitive target | Tier shift |
|
|
45
|
+
| --------- | --------------------------- | ------------------------------------------------------- | -------------------------------------------- |
|
|
46
|
+
| Read | Source file | `.env`, `credentials.*`, private key | Passive → Reconnaissance |
|
|
47
|
+
| Read | Local DB | Production DB or secrets table | Passive → Reconnaissance |
|
|
48
|
+
| Write | Source file | Lockfile, environment config, public-key registry | Modification → Modification (still standard) |
|
|
49
|
+
| Run | Script with no side effects | Script with side effects (install, deploy, mutate prod) | Passive → Modification or Destructive |
|
|
50
|
+
| Git push | Topic branch | Main / master, force-push | Modification → Destructive (force-push) |
|
|
51
|
+
|
|
52
|
+
When in doubt about the target, classify _up_, not down.
|
|
53
|
+
|
|
54
|
+
## 3. The Identify / Confirm / Verify Sequence
|
|
55
|
+
|
|
56
|
+
Before executing any tier-3 or tier-4 tool call:
|
|
57
|
+
|
|
58
|
+
### Identify
|
|
59
|
+
|
|
60
|
+
State explicitly:
|
|
61
|
+
|
|
62
|
+
- The exact action (full command, full target path)
|
|
63
|
+
- The classified tier
|
|
64
|
+
- The reason this action is needed
|
|
65
|
+
|
|
66
|
+
If the agent cannot complete this sentence — "I'm about to run X (tier Y) because Z" — it shouldn't fire the tool. Inability to articulate is itself a stop signal.
|
|
67
|
+
|
|
68
|
+
### Confirm
|
|
69
|
+
|
|
70
|
+
Check the action against the active plan or task spec:
|
|
71
|
+
|
|
72
|
+
- Was this action agreed to?
|
|
73
|
+
- Does the spec name the same target?
|
|
74
|
+
- If the action escalates a previously-agreed tier (e.g., the spec said "modify"; the proposed action is "destroy"), is the escalation explicitly authorized?
|
|
75
|
+
|
|
76
|
+
Drift between agreed action and proposed action is the signal. The right response to drift is to _re-confirm with the human_, not to proceed.
|
|
77
|
+
|
|
78
|
+
### Verify
|
|
79
|
+
|
|
80
|
+
Ask: is there a non-destructive alternative that achieves the same goal?
|
|
81
|
+
|
|
82
|
+
| Destructive | Non-destructive alternative |
|
|
83
|
+
| ------------------------------- | ------------------------------------------------------------------ |
|
|
84
|
+
| `git reset --hard` | `git revert` (preserves history) or `git stash` (preserves work) |
|
|
85
|
+
| `git push --force` | `git push --force-with-lease` (fails if remote moved unexpectedly) |
|
|
86
|
+
| `DROP TABLE x` | `ALTER TABLE x RENAME TO x_archived_<date>` (reversible) |
|
|
87
|
+
| `DELETE FROM x WHERE condition` | `UPDATE x SET deleted_at = now() WHERE condition` (soft delete) |
|
|
88
|
+
| `rm -rf <dir>` | `mv <dir> <dir>.archived.<date>` (still on disk; recoverable) |
|
|
89
|
+
| `npm publish` | `npm publish --dry-run` first (sees the package; doesn't push) |
|
|
90
|
+
| Lockfile rewrite | Smaller dependency change scoped to one package |
|
|
91
|
+
|
|
92
|
+
If a non-destructive alternative exists and the destructive form was not specifically requested, prefer the non-destructive form.
|
|
93
|
+
|
|
94
|
+
## 4. Trigger Phrases
|
|
95
|
+
|
|
96
|
+
The skill should activate before any tool call where the agent is about to:
|
|
97
|
+
|
|
98
|
+
- Modify or write a file (`Write`, `Edit`, `MultiEdit`, `replace_file_content`, …)
|
|
99
|
+
- Run a git command that mutates state (`commit`, `push`, `reset`, `rebase`, `merge`, `cherry-pick`, `branch -D`, `tag`, `stash drop`)
|
|
100
|
+
- Run a database query that mutates state (`INSERT`, `UPDATE`, `DELETE`, `DROP`, `TRUNCATE`, `ALTER`, `CREATE`)
|
|
101
|
+
- Run an install / publish / deploy command (`npm/pnpm/yarn install`, `npm publish`, `vercel deploy`, `cargo publish`, `pip install`, `apt install`, `gh repo edit`)
|
|
102
|
+
- Run a shell command with `&&`, `||`, `;`, `|` chains that include any of the above
|
|
103
|
+
- Read any file matching `.env*`, `credentials*`, `id_rsa*`, `*.pem`, `*.key`, `secrets.*`, `keystore*`
|
|
104
|
+
|
|
105
|
+
These triggers are deliberately broad. False positives (classifying a Passive action as needing a tier check) are cheap; false negatives (firing a Destructive command without classification) are the failure mode this skill exists to prevent.
|
|
106
|
+
|
|
107
|
+
## 5. Anti-Patterns
|
|
108
|
+
|
|
109
|
+
| Anti-pattern | Why it fails | Correct approach |
|
|
110
|
+
| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
|
|
111
|
+
| Classifying _all_ reads as Passive | A read of `.env` is Reconnaissance — credential exposure is the risk even with no state change | Check operation _and_ target type |
|
|
112
|
+
| Treating `npm install` / `pnpm install` as Passive | Lockfile rewrites and node_modules churn affect reproducibility and can pull in compromised packages | Classify any environment-affecting command as at least Modification |
|
|
113
|
+
| Skipping classification for "familiar" commands | `git push` is routine; `git push --force origin main` is Destructive — flags change tier | Classify every tool call regardless of familiarity |
|
|
114
|
+
| Classifying force-push as Modification | Force-push rewrites remote history and cannot be `git checkout`-ed back | Any history-rewriting or unrecoverable action is Destructive |
|
|
115
|
+
| Proceeding with Destructive without checking alternatives | `git reset --hard` instead of `git revert` is the single most common preventable loss | Run the Verify step every time |
|
|
116
|
+
| Conflating Reconnaissance with Passive because "no state changes" | Information exposure (logging credentials, leaking connection strings into chat history) is itself a state change at the system level | Reconnaissance is its own tier for a reason |
|
|
117
|
+
|
|
118
|
+
## Verification
|
|
119
|
+
|
|
120
|
+
- [ ] Before any tier-3 or tier-4 tool call, the agent has stated the action, the tier, and the reason in plain text
|
|
121
|
+
- [ ] Operation-and-target rule was applied — sensitive targets elevated the tier above what the operation alone would suggest
|
|
122
|
+
- [ ] The Confirm step checked the action against the agreed plan; any drift was re-confirmed with the human, not proceeded past
|
|
123
|
+
- [ ] The Verify step considered at least one non-destructive alternative and either chose it or named why the destructive form is required
|
|
124
|
+
- [ ] No tool call fired without an explicit tier classification — no exceptions for "familiar" commands
|
|
125
|
+
- [ ] The trigger-phrase list is the activation contract, not a suggestion: any matching command runs through the sequence
|
|
126
|
+
|
|
127
|
+
## Do NOT Use When
|
|
128
|
+
|
|
129
|
+
| Use instead | When |
|
|
130
|
+
| ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
131
|
+
| A hook-based guardrail (deterministic blocker, e.g. PreToolUse hook in Claude Code) | Setting up _reactive_ / _structural_ enforcement that fires on a pattern match in the harness — that is hook-pattern territory; this skill is the agent-side cognitive classifier |
|
|
132
|
+
| A code-quality / code-logic skill | Deciding _what_ the code should do — implementation correctness rather than action risk |
|
|
133
|
+
| Task execution | Actually doing the work after classification has cleared the action |
|
|
134
|
+
| `owasp-security` | A domain audit against a known threat catalog (Top 10) — that is a class of investigation, not per-action classification |
|
|
135
|
+
| `code-review` | Reviewing an artefact for quality — orthogonal to action-risk classification |
|
|
136
|
+
| `version-control` | The general discipline of using git well — this skill is the moment-of-execution gate on specific git commands |
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: interaction-feedback
|
|
3
|
+
description: "Use when designing UI feedback around user actions and system state: loading, skeletons, optimistic updates, progress, success, errors, empty states, retries, disabled/pending states, autosave, undo, and perceived latency. Do NOT use for the words inside feedback (use `microcopy`), accessibility announcement mechanics (use `a11y`), business lifecycle modeling (use `state-machine-modeling`), or performance optimization (use `performance-engineering`)."
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Portable feedback-state design for web and app UI. Applies before framework-specific implementation and after task or interaction pattern selection.
|
|
6
|
+
allowed-tools: Read Grep
|
|
7
|
+
metadata:
|
|
8
|
+
metadata: "{\"schema_version\":6,\"version\":\"1.0.0\",\"type\":\"capability\",\"category\":\"design\",\"domain\":\"design/interaction\",\"scope\":\"portable\",\"owner\":\"skill-graph-maintainer\",\"freshness\":\"2026-05-11\",\"drift_check\":\"{\\\\\\\"last_verified\\\\\\\":\\\\\\\"2026-05-11\\\\\\\"}\",\"eval_artifacts\":\"present\",\"eval_state\":\"unverified\",\"routing_eval\":\"absent\",\"stability\":\"experimental\",\"keywords\":\"[\\\\\\\"interaction-feedback\\\\\\\",\\\\\\\"feedback-state staging\\\\\\\",\\\\\\\"optimistic ui\\\\\\\",\\\\\\\"pending state\\\\\\\",\\\\\\\"retry feedback\\\\\\\",\\\\\\\"undo feedback\\\\\\\",\\\\\\\"perceived latency\\\\\\\",\\\\\\\"long-running action feedback\\\\\\\",\\\\\\\"skeleton loading\\\\\\\"]\",\"examples\":\"[\\\\\\\"design loading, success, error, and retry feedback for this async action\\\\\\\",\\\\\\\"should this save be optimistic, pending, blocked, or undoable?\\\\\\\",\\\\\\\"the sync takes 30 seconds - what should users see at each stage?\\\\\\\",\\\\\\\"add feedback states so the UI does not feel frozen after clicking Export\\\\\\\"]\",\"anti_examples\":\"[\\\\\\\"rewrite the toast and validation text\\\\\\\",\\\\\\\"make sure the status update is announced to screen readers\\\\\\\",\\\\\\\"model the order lifecycle and legal transitions\\\\\\\",\\\\\\\"profile the endpoint that makes this action slow\\\\\\\"]\",\"relations\":\"{\\\\\\\"boundary\\\\\\\":[{\\\\\\\"skill\\\\\\\":\\\\\\\"microcopy\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"microcopy owns the words inside feedback states; interaction-feedback owns timing, placement, persistence, and recovery behavior\\\\\\\"},{\\\\\\\"skill\\\\\\\":\\\\\\\"a11y\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"a11y owns assistive-technology announcement mechanics; interaction-feedback owns the visible and behavioral feedback model\\\\\\\"},{\\\\\\\"skill\\\\\\\":\\\\\\\"state-machine-modeling\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"state-machine-modeling owns business lifecycle legality; interaction-feedback owns the UI representation of pending, success, failure, and recovery\\\\\\\"},{\\\\\\\"skill\\\\\\\":\\\\\\\"performance-engineering\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"performance-engineering reduces measured latency; interaction-feedback communicates latency and state honestly\\\\\\\"}],\\\\\\\"related\\\\\\\":[\\\\\\\"interaction-patterns\\\\\\\",\\\\\\\"microcopy\\\\\\\",\\\\\\\"task-analysis\\\\\\\",\\\\\\\"a11y\\\\\\\",\\\\\\\"performance-engineering\\\\\\\"],\\\\\\\"verify_with\\\\\\\":[\\\\\\\"a11y\\\\\\\",\\\\\\\"microcopy\\\\\\\"]}\",\"portability\":\"{\\\\\\\"readiness\\\\\\\":\\\\\\\"scripted\\\\\\\",\\\\\\\"targets\\\\\\\":[\\\\\\\"skill-md\\\\\\\"]}\",\"lifecycle\":\"{\\\\\\\"stale_after_days\\\\\\\":365,\\\\\\\"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/interaction-feedback/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/interaction-feedback/SKILL.md
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Interaction Feedback
|
|
16
|
+
|
|
17
|
+
## Coverage
|
|
18
|
+
|
|
19
|
+
Design feedback states for user actions and system changes. Covers immediate click feedback, loading indicators, skeletons, optimistic UI, pending and disabled states, progress, success confirmation, persistent errors, retry, undo, autosave, long-running jobs, empty and low-data states, and perceived-latency staging.
|
|
20
|
+
|
|
21
|
+
## Philosophy
|
|
22
|
+
|
|
23
|
+
Feedback is the user's proof that the system heard them. Without it, users repeat actions, abandon flows, or assume data was lost. Good feedback is honest about uncertainty and gives recovery paths when the system cannot complete the action.
|
|
24
|
+
|
|
25
|
+
Feedback is not the same as performance. A fast system still needs confirmation, and a slow system still needs staged truth.
|
|
26
|
+
|
|
27
|
+
## Method
|
|
28
|
+
|
|
29
|
+
1. Name the action or state change that needs feedback.
|
|
30
|
+
2. Classify expected duration: instant, short, medium, long, background, or unknown.
|
|
31
|
+
3. Decide the feedback surface: inline state, button state, skeleton, banner, toast, progress row, modal, or job history.
|
|
32
|
+
4. Define transitions: idle, pending, partial, success, failure, retrying, cancelled, and undoable.
|
|
33
|
+
5. Preserve user control for long or destructive actions: cancel, retry, undo, leave-and-return.
|
|
34
|
+
6. Hand off wording to `microcopy` and announcement mechanics to `a11y`.
|
|
35
|
+
7. Verify the user can tell whether work is still happening, done, failed, or recoverable.
|
|
36
|
+
|
|
37
|
+
## Evals
|
|
38
|
+
|
|
39
|
+
This skill ships a comprehension-eval artifact at [`examples/evals/interaction-feedback.json`](https://github.com/jacob-balslev/skill-graph/blob/main/examples/evals/interaction-feedback.json). The checklist below is the authoring gate for feedback-state design; the eval file is the grader surface.
|
|
40
|
+
|
|
41
|
+
## Verification
|
|
42
|
+
|
|
43
|
+
- [ ] Every async action has an immediate observable response
|
|
44
|
+
- [ ] Long-running work has progress, backgrounding, or return-later behavior
|
|
45
|
+
- [ ] Optimistic updates define rollback and conflict behavior
|
|
46
|
+
- [ ] Success states are visible without being noisy
|
|
47
|
+
- [ ] Errors are persistent enough to recover from
|
|
48
|
+
- [ ] Retry, cancel, undo, or support paths exist when relevant
|
|
49
|
+
- [ ] Screen-reader announcement and wording are verified by `a11y` and `microcopy`
|
|
50
|
+
|
|
51
|
+
## Do NOT Use When
|
|
52
|
+
|
|
53
|
+
| Use instead | When |
|
|
54
|
+
|---|---|
|
|
55
|
+
| `microcopy` | The task is writing button labels, toast text, empty-state text, or validation copy. |
|
|
56
|
+
| `a11y` | The task is live regions, screen-reader announcements, focus management, or WCAG compliance. |
|
|
57
|
+
| `state-machine-modeling` | The task is defining legal lifecycle states, guards, and transitions. |
|
|
58
|
+
| `performance-engineering` | The task is measuring and reducing latency, bundle size, query cost, or throughput. |
|
|
59
|
+
| `interaction-patterns` | The task is selecting the primary control or interaction pattern. |
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: interaction-patterns
|
|
3
|
+
description: "Use when choosing or auditing UI interaction patterns and controls: tabs vs pages, dropdown vs combobox, stepper vs wizard, modal vs inline edit, disclosure, command menus, selection, filtering, and gesture alternatives. Do NOT use for accessibility compliance (use `a11y`), task decomposition (use `task-analysis`), feedback-state staging (use `interaction-feedback`), or reusable component API design (use `design-system-architecture`)."
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Portable interaction-pattern guidance for web and app UI. Pattern choices should be checked against platform conventions and accessible-widget guidance before implementation.
|
|
6
|
+
allowed-tools: Read Grep
|
|
7
|
+
metadata:
|
|
8
|
+
metadata: "{\"schema_version\":6,\"version\":\"1.0.0\",\"type\":\"capability\",\"category\":\"design\",\"domain\":\"design/interaction\",\"scope\":\"portable\",\"owner\":\"skill-graph-maintainer\",\"freshness\":\"2026-05-11\",\"drift_check\":\"{\\\\\\\"last_verified\\\\\\\":\\\\\\\"2026-05-11\\\\\\\"}\",\"eval_artifacts\":\"present\",\"eval_state\":\"unverified\",\"routing_eval\":\"present\",\"stability\":\"experimental\",\"keywords\":\"[\\\\\\\"interaction-patterns\\\\\\\",\\\\\\\"control pattern selection\\\\\\\",\\\\\\\"dropdown combobox choice\\\\\\\",\\\\\\\"modal inline edit choice\\\\\\\",\\\\\\\"tabs accordion choice\\\\\\\",\\\\\\\"bulk selection pattern\\\\\\\",\\\\\\\"command menu pattern\\\\\\\",\\\\\\\"disclosure pattern\\\\\\\",\\\\\\\"gesture alternative\\\\\\\",\\\\\\\"modal vs panel choice\\\\\\\",\\\\\\\"pagination vs infinite scroll\\\\\\\",\\\\\\\"tooltip vs popover\\\\\\\"]\",\"examples\":\"[\\\\\\\"should this control be a dropdown, combobox, radio group, or stepper?\\\\\\\",\\\\\\\"choose the interaction pattern for bulk editing rows in this table\\\\\\\",\\\\\\\"this modal interrupts the flow - should the edit be inline instead?\\\\\\\",\\\\\\\"decide whether these settings belong in tabs, accordion sections, or separate pages\\\\\\\"]\",\"anti_examples\":\"[\\\\\\\"audit this combobox for ARIA roles and keyboard support\\\\\\\",\\\\\\\"define the user's top task before choosing controls\\\\\\\",\\\\\\\"add skeleton loading and optimistic feedback to this action\\\\\\\",\\\\\\\"define the component props, variants, slots, and token contract\\\\\\\"]\",\"relations\":\"{\\\\\\\"boundary\\\\\\\":[{\\\\\\\"skill\\\\\\\":\\\\\\\"a11y\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"a11y verifies accessibility semantics and keyboard behavior; interaction-patterns chooses the user-facing pattern before implementation\\\\\\\"},{\\\\\\\"skill\\\\\\\":\\\\\\\"task-analysis\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"task-analysis identifies what the user is trying to accomplish; interaction-patterns chooses the control pattern that supports it\\\\\\\"},{\\\\\\\"skill\\\\\\\":\\\\\\\"interaction-feedback\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"interaction-feedback owns feedback states after an action; interaction-patterns owns the primary control and flow shape\\\\\\\"},{\\\\\\\"skill\\\\\\\":\\\\\\\"design-system-architecture\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"design-system-architecture owns reusable component APIs; interaction-patterns decides which pattern is appropriate for a surface\\\\\\\"},{\\\\\\\"skill\\\\\\\":\\\\\\\"design-module-composition\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"design-module-composition owns component props, variants, slots, and token contracts; interaction-patterns owns choosing the user-facing control pattern\\\\\\\"},{\\\\\\\"skill\\\\\\\":\\\\\\\"component-architecture\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"component-architecture owns the component-library layering question (primitives, composites, product-specific) and headless/styled, controlled/uncontrolled splits; interaction-patterns owns choosing the user-facing control pattern before any component is designed\\\\\\\"}],\\\\\\\"related\\\\\\\":[\\\\\\\"layout-composition\\\\\\\",\\\\\\\"form-ux-architecture\\\\\\\",\\\\\\\"microcopy\\\\\\\",\\\\\\\"semiotics\\\\\\\",\\\\\\\"a11y\\\\\\\"],\\\\\\\"verify_with\\\\\\\":[\\\\\\\"a11y\\\\\\\",\\\\\\\"task-analysis\\\\\\\"]}\",\"portability\":\"{\\\\\\\"readiness\\\\\\\":\\\\\\\"scripted\\\\\\\",\\\\\\\"targets\\\\\\\":[\\\\\\\"skill-md\\\\\\\"]}\",\"lifecycle\":\"{\\\\\\\"stale_after_days\\\\\\\":365,\\\\\\\"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/interaction-patterns/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/interaction-patterns/SKILL.md
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Interaction Patterns
|
|
16
|
+
|
|
17
|
+
## Coverage
|
|
18
|
+
|
|
19
|
+
Choose and audit interaction patterns before implementation. Covers control selection, mode switching, progressive disclosure, modals, drawers, tabs, accordions, command menus, comboboxes, steppers, wizards, inline edit, bulk selection, filters, sorting, gestures, keyboard alternatives, and pattern fit under task pressure.
|
|
20
|
+
|
|
21
|
+
## Philosophy
|
|
22
|
+
|
|
23
|
+
Most confusing interfaces are not missing components; they chose the wrong pattern for the decision the user has to make. A dropdown hides options that need comparison. A modal blocks context the user needs. A wizard adds ceremony to a task that only needed one form.
|
|
24
|
+
|
|
25
|
+
Choose the pattern from the user's decision shape: compare, choose one, choose many, sequence, search, edit, confirm, or recover.
|
|
26
|
+
|
|
27
|
+
## Method
|
|
28
|
+
|
|
29
|
+
1. Name the user decision or action the control must support.
|
|
30
|
+
2. Classify the choice set: small, large, searchable, hierarchical, ordered, destructive, reversible, or repeated.
|
|
31
|
+
3. Choose the simplest known pattern that keeps needed context visible.
|
|
32
|
+
4. Preserve alternatives for keyboard and non-pointer users before handoff to `a11y`.
|
|
33
|
+
5. Define what happens on selection, cancel, escape, undo, and invalid action.
|
|
34
|
+
6. Check whether the pattern works with loading, empty, error, and permission-limited states.
|
|
35
|
+
7. Hand off component API concerns to `design-system-architecture`.
|
|
36
|
+
|
|
37
|
+
## Evals
|
|
38
|
+
|
|
39
|
+
This skill ships a comprehension-eval artifact at [`examples/evals/interaction-patterns.json`](https://github.com/jacob-balslev/skill-graph/blob/main/examples/evals/interaction-patterns.json). The checklist below is the authoring gate for pattern choice; the eval file is the grader surface.
|
|
40
|
+
|
|
41
|
+
## Verification
|
|
42
|
+
|
|
43
|
+
- [ ] The pattern matches the user's decision type
|
|
44
|
+
- [ ] Hidden options are acceptable only when comparison is not required
|
|
45
|
+
- [ ] Context needed to decide is visible or intentionally preserved
|
|
46
|
+
- [ ] Cancel, escape, undo, and invalid-action behavior are defined
|
|
47
|
+
- [ ] Pointer-only gestures have a keyboard or explicit control alternative
|
|
48
|
+
- [ ] Loading, empty, error, and disabled states fit the pattern
|
|
49
|
+
- [ ] Accessibility implementation is handed off to `a11y`
|
|
50
|
+
|
|
51
|
+
## Do NOT Use When
|
|
52
|
+
|
|
53
|
+
| Use instead | When |
|
|
54
|
+
|---|---|
|
|
55
|
+
| `a11y` | The task is ARIA roles, keyboard behavior, focus management, labels, or WCAG compliance. |
|
|
56
|
+
| `task-analysis` | The user goal, top task, or flow breakpoint is still unknown. |
|
|
57
|
+
| `interaction-feedback` | The pattern is chosen and the task is feedback timing, progress, optimistic UI, or state visibility. |
|
|
58
|
+
| `design-system-architecture` | The task is reusable component APIs, variants, slots, tokens, or governance. |
|
|
59
|
+
| `form-ux-architecture` | The surface is primarily a form with validation, field grouping, and submission lifecycle concerns. |
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: journey-mapping
|
|
3
|
+
description: "Use when mapping a user's experience across multiple touchpoints and time, surfacing emotional peaks and troughs, identifying opportunity moments in a cross-channel flow, or aligning a team on the end-to-end experience including back-stage support processes. Do NOT use for decomposing a single screen into UI steps (use task-analysis) or for drawing back-end service architecture diagrams — journey maps describe human experience, not system topology."
|
|
4
|
+
license: CC-BY-4.0
|
|
5
|
+
metadata:
|
|
6
|
+
metadata: "{\"schema_version\":6,\"version\":\"1.0.0\",\"type\":\"capability\",\"category\":\"design\",\"scope\":\"portable\",\"owner\":\"skill-graph-maintainer\",\"freshness\":\"2026-05-12\",\"drift_check\":\"{\\\\\\\"last_verified\\\\\\\":\\\\\\\"2026-05-12\\\\\\\"}\",\"eval_artifacts\":\"planned\",\"eval_state\":\"unverified\",\"routing_eval\":\"absent\",\"stability\":\"experimental\",\"keywords\":\"[\\\\\\\"customer journey map\\\\\\\",\\\\\\\"user journey\\\\\\\",\\\\\\\"service blueprint\\\\\\\",\\\\\\\"touchpoint\\\\\\\",\\\\\\\"moments of truth\\\\\\\",\\\\\\\"experience map\\\\\\\",\\\\\\\"front-stage back-stage\\\\\\\",\\\\\\\"emotional curve\\\\\\\",\\\\\\\"opportunity areas\\\\\\\",\\\\\\\"pain points\\\\\\\",\\\\\\\"cross-channel experience\\\\\\\",\\\\\\\"end-to-end journey\\\\\\\",\\\\\\\"onboarding journey\\\\\\\"]\",\"triggers\":\"[\\\\\\\"journey map\\\\\\\",\\\\\\\"service blueprint\\\\\\\",\\\\\\\"map the user experience\\\\\\\",\\\\\\\"customer journey\\\\\\\",\\\\\\\"touchpoints\\\\\\\"]\",\"examples\":\"[\\\\\\\"Build a journey map for first-time tax filers from awareness through filing to refund.\\\\\\\",\\\\\\\"Add a service-blueprint layer below this journey map showing the back-stage support steps.\\\\\\\",\\\\\\\"Identify the emotional low points in this onboarding journey and the opportunities at each.\\\\\\\",\\\\\\\"Map the cross-channel experience of returning an online order to a physical store.\\\\\\\"]\",\"anti_examples\":\"[\\\\\\\"Break down the steps a user takes inside the upload modal.\\\\\\\",\\\\\\\"Draw the microservice call graph for the checkout API.\\\\\\\",\\\\\\\"Diagram the database schema for the order entity.\\\\\\\"]\",\"relations\":\"{\\\\\\\"related\\\\\\\":[\\\\\\\"research-synthesis\\\\\\\",\\\\\\\"information-architecture\\\\\\\",\\\\\\\"design-thinking\\\\\\\",\\\\\\\"problem-framing\\\\\\\"],\\\\\\\"boundary\\\\\\\":[{\\\\\\\"skill\\\\\\\":\\\\\\\"task-analysis\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"task-analysis decomposes a single goal-directed task into ordered steps within one interface or session. journey-mapping spans many sessions, channels, and days, and includes emotional and contextual layers task-analysis does not.\\\\\\\"},{\\\\\\\"skill\\\\\\\":\\\\\\\"bounded-context-mapping\\\\\\\",\\\\\\\"reason\\\\\\\":\\\\\\\"bounded-context-mapping is an engineering practice for modeling DDD context boundaries. journey-mapping describes human experience across touchpoints — a similar diagrammatic instinct but unrelated output.\\\\\\\"}]}\",\"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/journey-mapping/SKILL.md\"}"
|
|
7
|
+
skill_graph_source_repo: "https://github.com/jacob-balslev/skill-graph"
|
|
8
|
+
skill_graph_protocol: Skill Metadata Protocol v4
|
|
9
|
+
skill_graph_project: Skill Graph
|
|
10
|
+
skill_graph_canonical_skill: skills/journey-mapping/SKILL.md
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Journey Mapping
|
|
14
|
+
|
|
15
|
+
## Coverage
|
|
16
|
+
Journey mapping covers the family of visualizations that lay out a user's experience as a timeline across stages, actions, thoughts, feelings, and touchpoints. The classic **customer journey map** (Jeff Patton's writing on story mapping is an adjacent influence; NN/g has codified the canonical structure) typically has a horizontal axis of stages (e.g., Awareness → Consideration → Purchase → Onboarding → Use → Renew/Churn) and vertical lanes for what the user is doing, thinking, feeling, and which touchpoint they are interacting with. An **emotional curve** rendered along the timeline highlights peaks and troughs — the "moments of truth" that disproportionately shape the overall impression.
|
|
17
|
+
|
|
18
|
+
A **service blueprint** (Lynn Shostack, 1984) extends the journey map downward with **front-stage** elements (what the user sees), the **line of visibility**, and **back-stage** elements (what employees, systems, and processes do that the user does not see). Below those, **support processes** show the infrastructure that enables back-stage work. Service blueprints are appropriate when the experience involves human or system handoffs that the user never sees but that determine whether the experience succeeds.
|
|
19
|
+
|
|
20
|
+
The skill also covers **current-state vs future-state** maps (current documents reality and surfaces pain points; future proposes a redesigned experience and is used to align stakeholders), and the choice of **scope** — a single transaction, an entire lifecycle, or a specific moment-of-truth blown up in detail. Granularity matches the decision the map will inform; a board-level alignment map is coarser than a redesign brief.
|
|
21
|
+
|
|
22
|
+
## Philosophy
|
|
23
|
+
Journey maps exist because experience is temporal and cross-channel, and most artifacts a team produces are neither. A screen design captures one moment; an architecture diagram captures one cross-section; a backlog captures one project. The journey map is the only artifact that asks "what does the user actually live through, end to end, including the parts that happen on phone calls, in physical mail, in the gap between sessions, and in the moments when they think about us and then put it down?"
|
|
24
|
+
|
|
25
|
+
The practice resists two failure modes. The first is the **anodyne happy-path map**, where every stage is labeled with a positive verb and the emotional curve is a gentle wave — these maps describe what the team hopes is true rather than what research showed. The second is the **everything-everywhere map**, where ambition outruns research and the map sprouts lanes for every possible channel without evidence. A journey map's credibility comes from being grounded in synthesis output; without that grounding it is decoration.
|
|
26
|
+
|
|
27
|
+
## Verification
|
|
28
|
+
- The map is grounded in specific research evidence — each pain point and emotional trough cites at least one source (interview quote, observation, support log) rather than being asserted.
|
|
29
|
+
- Stages on the horizontal axis are named from the user's perspective ("trying to understand what I owe") rather than the business's ("acquisition funnel stage 2").
|
|
30
|
+
- The emotional curve has actual lows, not only highs and neutrals — a curve with no dips usually means the map omits the hard parts.
|
|
31
|
+
- For service blueprints, the line of visibility is drawn explicitly and the back-stage steps include both human and system actors.
|
|
32
|
+
- The map identifies named **opportunity areas** at specific stages, not a generic "improve onboarding" annotation.
|
|
33
|
+
- A stakeholder who did not attend the mapping session can read the map and explain back the journey's overall arc, including where it goes wrong.
|
|
34
|
+
|
|
35
|
+
## Do NOT Use When
|
|
36
|
+
- The scope is a single screen or single task within one session — use **task-analysis** for goal-directed step decomposition.
|
|
37
|
+
- The team has not yet done qualitative research on the journey — run **user-research** and **research-synthesis** first; an unresearched journey map is fiction.
|
|
38
|
+
- The diagram needed is a system architecture, microservice topology, or data flow — those are engineering artifacts, not journey maps.
|
|
39
|
+
- The output should be a navigation structure or content taxonomy — use **information-architecture**.
|
|
40
|
+
- The task is modeling engineering domain events across bounded contexts — use **event-storming** or **bounded-context-mapping**.
|
|
41
|
+
- The team is in solutioning mode and needs to generate concept variants — use **ideation**; journey mapping clarifies experience, it does not invent new ones.
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: keywords
|
|
3
|
+
description: "Use when performing keyword research, building keyword strategy, optimizing product or marketplace listings, selecting terms for content, detecting cannibalization, or planning topical clusters. Covers seed expansion, intent mapping, topical clustering, marketplace keyword limits, long-tail POD/merch strategy, and tracking methodology. Do NOT use for full SEO implementation strategy (use `seo-strategy`), product copywriting (use `writing-humanizer`), or information architecture (use `information-architecture`)."
|
|
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\":\"product\",\"domain\":\"product/overlay\",\"scope\":\"portable\",\"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\":\"[\\\\\\\"keyword research\\\\\\\",\\\\\\\"keyword strategy\\\\\\\",\\\\\\\"keyword clustering\\\\\\\",\\\\\\\"long-tail keywords\\\\\\\",\\\\\\\"etsy tags\\\\\\\",\\\\\\\"amazon keywords\\\\\\\",\\\\\\\"keyword cannibalization\\\\\\\",\\\\\\\"search intent\\\\\\\",\\\\\\\"topical authority\\\\\\\",\\\\\\\"keyword tracking\\\\\\\",\\\\\\\"rank tracking\\\\\\\",\\\\\\\"SERP\\\\\\\",\\\\\\\"seed keywords\\\\\\\",\\\\\\\"keyword mapping\\\\\\\"]\",\"triggers\":\"[\\\\\\\"keyword-skill\\\\\\\",\\\\\\\"keyword-research-skill\\\\\\\"]\",\"relations\":\"{\\\\\\\"related\\\\\\\":[\\\\\\\"seo-strategy\\\\\\\"]}\",\"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/keywords/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/keywords/SKILL.md
|
|
13
|
+
---
|
|
14
|
+
# Keyword Research & Strategy Skill
|
|
15
|
+
|
|
16
|
+
## Domain Context
|
|
17
|
+
|
|
18
|
+
**What is this skill?** This skill provides keyword research, clustering, and platform-specific keyword optimization for e-commerce and SaaS. Covers seed keyword expansion, search intent mapping (informational/navigational/transactional/commercial), keyword clustering for topical authority, marketplace-specific keyword rules (Etsy 13-tag limit and 140-char title priority, Amazon backend keywords and 250-byte limit, Shopify product/collection meta fields), long-tail strategy for POD/merch businesses, cannibalization detection, and keyword tracking methodology. Use when performing keyword research, building a keyword strategy, optimizing product listings for marketplace search, choosing keywords for new content, detecting keyword cannibalization, or planning topical clusters. Do NOT use for diagnosing existing SEO problems (use seo-audit), building optimized pages at scale (use seo-strategy), content writing (use copywriting), or site page hierarchy (use site-architecture).
|
|
19
|
+
## Key Files
|
|
20
|
+
|
|
21
|
+
| File | Purpose |
|
|
22
|
+
|---|---|
|
|
23
|
+
| `skills/keywords/references/marketplace-keyword-rules.md` | See for detailed per-platform rules. |
|
|
24
|
+
## Project-Specific Rules
|
|
25
|
+
|
|
26
|
+
This skill captures project-local rules and constraints that narrow or refine a broader pattern. Treat the repo-specific guidance and key files below as authoritative for this project.
|
|
27
|
+
|
|
28
|
+
## Coverage
|
|
29
|
+
|
|
30
|
+
Seed keyword expansion, search intent mapping (informational/navigational/transactional/commercial investigation), keyword clustering for topical authority (pillar-cluster model), marketplace-specific keyword rules (Etsy 13-tag limit and 140-char title priority, Amazon backend keywords and 250-byte limit, Shopify collection-page SEO priority), long-tail strategy for POD/merch businesses, cannibalization detection and resolution, keyword tracking methodology and tool selection by platform, and tracking cadence for rank monitoring.
|
|
31
|
+
|
|
32
|
+
## Philosophy
|
|
33
|
+
|
|
34
|
+
Keywords are the bridge between what a seller creates and what a buyer searches for. Without systematic keyword research, product listings and content pages either target terms that are too competitive (impossible to rank) or too generic (no buyer intent). For POD sellers in particular, each design is a unique product that must match a specific long-tail query. This skill exists because agents repeatedly make three mistakes without it: (1) suggesting single-word Etsy tags instead of multi-word phrases, (2) repeating title words in Amazon backend keywords (wasting the 250-byte limit), and (3) targeting head terms on Shopify product pages instead of routing generic keywords to collection pages.
|
|
35
|
+
|
|
36
|
+
> Research the right keywords before building pages or writing content.
|
|
37
|
+
|
|
38
|
+
## When to Use This Skill
|
|
39
|
+
|
|
40
|
+
Load this skill when:
|
|
41
|
+
- Performing keyword research for new products, pages, or content
|
|
42
|
+
- Building a keyword strategy for a Shopify store, Etsy shop, or Amazon listing
|
|
43
|
+
- Optimizing product listing titles and tags for marketplace search
|
|
44
|
+
- Planning topical clusters for a blog or content hub
|
|
45
|
+
- Detecting and resolving keyword cannibalization
|
|
46
|
+
- Setting up keyword rank tracking
|
|
47
|
+
|
|
48
|
+
Do NOT use for:
|
|
49
|
+
- Diagnosing why pages aren't ranking (use **seo-audit**)
|
|
50
|
+
- Building or optimizing pages at scale (use **seo-strategy**)
|
|
51
|
+
- Writing the actual content (use **copywriting**)
|
|
52
|
+
- Planning site page hierarchy (use **site-architecture**)
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 1. Keyword Research Process
|
|
57
|
+
|
|
58
|
+
### Seed -> Expansion -> Clustering -> Intent Mapping
|
|
59
|
+
|
|
60
|
+
| Phase | Goal | Method |
|
|
61
|
+
|-------|------|--------|
|
|
62
|
+
| **Seed** | Identify 5-15 core terms | Product names, competitor analysis, niche vocabulary |
|
|
63
|
+
| **Expansion** | Grow to 100-500 candidates | Tool-assisted: related terms, questions, long-tail variations |
|
|
64
|
+
| **Clustering** | Group by topic/intent | Semantic similarity, shared SERP overlap, parent-child relationships |
|
|
65
|
+
| **Intent Mapping** | Classify each cluster | Informational / Navigational / Transactional / Commercial Investigation |
|
|
66
|
+
|
|
67
|
+
### Search Intent Types
|
|
68
|
+
|
|
69
|
+
| Intent | Signal Words | Page Type | Example |
|
|
70
|
+
|--------|-------------|-----------|---------|
|
|
71
|
+
| **Informational** | how, what, why, guide, tutorial | Blog post, guide | "how to start a merch business" |
|
|
72
|
+
| **Navigational** | brand name, login, app | Homepage, product page | "printify dashboard" |
|
|
73
|
+
| **Transactional** | buy, order, price, discount, cheap | Product page, collection | "anti-trump t-shirt buy" |
|
|
74
|
+
| **Commercial Investigation** | best, vs, review, comparison, alternative | Comparison page, listicle | "printify vs printful for t-shirts" |
|
|
75
|
+
|
|
76
|
+
### Long-Tail Strategy for POD/Merch
|
|
77
|
+
|
|
78
|
+
POD sellers benefit disproportionately from long-tail keywords because:
|
|
79
|
+
1. Head terms ("t-shirt") are impossible to rank for
|
|
80
|
+
2. Long-tail captures buyer intent ("funny anti-trump gift for dad")
|
|
81
|
+
3. Each design is a unique product — match keyword to design theme
|
|
82
|
+
4. Lower competition = faster ranking on marketplace search
|
|
83
|
+
|
|
84
|
+
**Pattern:** `[adjective] + [topic/theme] + [product type] + [audience/occasion]`
|
|
85
|
+
Example: "sarcastic political humor coffee mug gift"
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## 2. Platform-Specific Keyword Rules
|
|
90
|
+
|
|
91
|
+
See `references/marketplace-keyword-rules.md` for detailed per-platform rules.
|
|
92
|
+
|
|
93
|
+
### Quick Reference
|
|
94
|
+
|
|
95
|
+
| Platform | Title Limit | Tags/Keywords | Priority Rule |
|
|
96
|
+
|----------|------------|---------------|---------------|
|
|
97
|
+
| **Etsy** | 140 chars | 13 tags (multi-word phrases, no single words) | First 40 chars most visible in search |
|
|
98
|
+
| **Amazon** | 200 chars (80 optimal) | 250-byte backend keywords | Primary keyword at title start; backend = synonyms only |
|
|
99
|
+
| **Shopify** | 70 chars (SEO title) | Meta description + collection page copy | Google SEO rules apply; collection pages rank higher than products |
|
|
100
|
+
| **SaaS** | 50-60 chars | N/A (Google organic) | Target one primary keyword per page; use related terms naturally |
|
|
101
|
+
|
|
102
|
+
### Critical Platform Gotchas
|
|
103
|
+
|
|
104
|
+
- **Etsy:** Tags are multi-word phrases, NOT single words. "vintage coffee mug" is one tag. All 13 tag slots must be used.
|
|
105
|
+
- **Amazon:** Backend keywords have a 250-byte (not character) limit. No punctuation, no brand names, no ASINs. Only add synonyms — don't repeat title words.
|
|
106
|
+
- **Shopify:** Product pages are hard to rank on Google. Prioritize collection pages for generic keywords. Product pages target specific long-tail.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 3. Keyword Clustering & Topical Authority
|
|
111
|
+
|
|
112
|
+
### Pillar-Cluster Model
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
Pillar Page: "Print on Demand Guide" (head term, 3000+ words)
|
|
116
|
+
├── Cluster: "POD Pricing Strategy" (commercial intent)
|
|
117
|
+
├── Cluster: "How to Design for POD" (informational)
|
|
118
|
+
├── Cluster: "Best POD Providers Compared" (commercial investigation)
|
|
119
|
+
├── Cluster: "POD Profit Margins Explained" (informational)
|
|
120
|
+
└── Cluster: "Start POD Business on Etsy" (transactional)
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Rules:**
|
|
124
|
+
1. Each cluster targets one keyword group with shared intent
|
|
125
|
+
2. Every cluster page links back to the pillar
|
|
126
|
+
3. Pillar links out to all clusters
|
|
127
|
+
4. No two clusters should target the same primary keyword (cannibalization)
|
|
128
|
+
|
|
129
|
+
### Cluster Types
|
|
130
|
+
|
|
131
|
+
| Type | Purpose | Example |
|
|
132
|
+
|------|---------|---------|
|
|
133
|
+
| **Topic cluster** | Build authority on a broad subject | "e-commerce analytics" pillar |
|
|
134
|
+
| **Product cluster** | Cover variations of one product type | "custom mugs" with design/printing/shipping sub-topics |
|
|
135
|
+
| **Comparison cluster** | Own the "X vs Y" search space | "Printify vs Printful vs Gelato" |
|
|
136
|
+
| **Question cluster** | Capture informational queries | "How does POD work?" FAQ hub |
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 4. Cannibalization Detection
|
|
141
|
+
|
|
142
|
+
Keyword cannibalization: two or more pages on the same site compete for the same keyword, splitting authority and harming both.
|
|
143
|
+
|
|
144
|
+
### Detection Protocol
|
|
145
|
+
|
|
146
|
+
1. **Search Console check:** Export queries, sort by page. If 2+ URLs appear for the same query with similar impressions, it's cannibalized.
|
|
147
|
+
2. **SERP check:** Search `site:yourdomain.com "target keyword"` — if multiple results appear, confirm overlap.
|
|
148
|
+
3. **Intent check:** Do the two pages serve the same search intent? If yes = cannibalization. If different intents (one informational, one transactional) = acceptable.
|
|
149
|
+
|
|
150
|
+
### Resolution Options
|
|
151
|
+
|
|
152
|
+
| Strategy | When to Use |
|
|
153
|
+
|----------|------------|
|
|
154
|
+
| **Merge** | Two thin pages on the same topic — combine into one authoritative page |
|
|
155
|
+
| **Redirect** | One page is clearly weaker — 301 redirect to the stronger one |
|
|
156
|
+
| **Differentiate** | Both pages serve different intents — sharpen each page's keyword focus |
|
|
157
|
+
| **Canonical** | Duplicate content from variants/parameters — canonical tag to the primary |
|
|
158
|
+
| **Noindex** | Low-value duplicate (tag page, filter page) — noindex to remove from competition |
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## 5. Keyword Tracking
|
|
163
|
+
|
|
164
|
+
### Tool Selection by Platform
|
|
165
|
+
|
|
166
|
+
| Platform | Recommended Tool | What It Tracks |
|
|
167
|
+
|----------|-----------------|----------------|
|
|
168
|
+
| **Etsy** | eRank, Marmalead, Alura | Tag performance, listing quality score, search rank |
|
|
169
|
+
| **Amazon** | Helium 10, Jungle Scout | Keyword rank, search volume, competitor keywords |
|
|
170
|
+
| **Shopify/SaaS** | Ahrefs, SEMrush, Google Search Console | Google rank, SERP features, CTR, impressions |
|
|
171
|
+
| **Cross-platform** | Google Trends | Relative demand, seasonality, geographic distribution |
|
|
172
|
+
|
|
173
|
+
### Tracking Cadence
|
|
174
|
+
|
|
175
|
+
- **Weekly:** Check rank movement for top 20 target keywords
|
|
176
|
+
- **Monthly:** Full keyword portfolio review (new opportunities, declining terms)
|
|
177
|
+
- **Quarterly:** Competitive keyword gap analysis
|
|
178
|
+
- **After changes:** Re-check ranks 2-4 weeks after title/tag optimizations (Etsy re-indexes in 4-6 weeks)
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Related Skills
|
|
183
|
+
|
|
184
|
+
- **seo-audit** — Diagnose why pages aren't ranking (technical + on-page audit)
|
|
185
|
+
- **seo-strategy** — Build optimized pages, programmatic SEO, schema markup, AI search
|
|
186
|
+
- **site-architecture** — Plan page hierarchy, navigation, URL structure
|
|
187
|
+
- **copywriting** — Write the actual content once keywords are chosen
|
|
188
|
+
- **seller-persona** — Understand which keywords matter for POD vs dropship vs inventory sellers
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Verification
|
|
193
|
+
|
|
194
|
+
After applying this skill, verify:
|
|
195
|
+
- [ ] Each keyword is mapped to a specific search intent (informational/navigational/transactional/commercial)
|
|
196
|
+
- [ ] Etsy tags are multi-word phrases (not single words) and all 13 slots are used
|
|
197
|
+
- [ ] Amazon backend keywords do not repeat title words and stay within 250-byte limit
|
|
198
|
+
- [ ] No two pages/listings target the same primary keyword (cannibalization check)
|
|
199
|
+
- [ ] Keyword clusters link back to their pillar page and pillar links to all clusters
|
|
200
|
+
- [ ] Platform-specific limits respected (Etsy 140-char title, Amazon 200-char title, Shopify 70-char SEO title)
|
|
201
|
+
- [ ] Long-tail keywords follow the `[adjective] + [topic/theme] + [product type] + [audience/occasion]` pattern
|
|
202
|
+
|
|
203
|
+
## Do NOT Use When
|
|
204
|
+
|
|
205
|
+
| Instead of this skill | Use | Why |
|
|
206
|
+
|---|---|---|
|
|
207
|
+
| Diagnosing why pages are not ranking | `seo-audit` | SEO audit covers technical SEO, crawlability, indexation, Core Web Vitals -- diagnostic problems, not keyword selection |
|
|
208
|
+
| Building optimized pages at scale | `seo-strategy` | SEO strategy owns page construction, schema markup, and programmatic SEO patterns |
|
|
209
|
+
| Writing the actual content for pages | `copywriting` | Copywriting owns tone, messaging, and content creation once keywords are chosen |
|
|
210
|
+
| Planning site page hierarchy and navigation | `site-architecture` | Site architecture owns URL structure, navigation taxonomy, and page-to-page relationships |
|
|
211
|
+
| Understanding the target buyer persona | `seller-persona` | Seller persona owns the business context that informs which keywords matter |
|
|
212
|
+
|
|
213
|
+
*Version 1.1.0 — 2026-03-28*
|