.agents/skills/skill-composition/SKILL.md
Compose multiple skills for complex multi-domain tasks. Use when a task requires expertise from more than one skill domain (e.g. a feature that spans Go development, API design, and observability instrumentation).
npx skillsauth add em-jones/staccato-toolkit skill-compositionInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Some tasks span multiple domains and require guidance from more than one skill. This document defines how to compose skills and how tasks declare their skill requirements.
Skills are loaded additively. When a task requires multiple skills, load each in sequence — later skills do not override earlier ones; they extend the context. Apply all loaded skills' constraints simultaneously when implementing.
To load multiple skills for a task, use the skill tool once per skill:
skill: go-developer
skill: observability-instrumentation
Both skills are now active. Follow all guidelines from both simultaneously. Where guidelines
conflict, prefer the more specific skill (e.g. observability-instrumentation over go-developer
on tracing questions).
Workers receive their skill from worker:next_task. For multi-domain tasks, the skill field may
be a comma-separated list:
skill: go-developer,observability-instrumentation
The worker loads each skill before beginning implementation.
These combinations appear frequently — load all listed skills when the task description matches:
| Task type | Skills to load |
| ---------------------------- | -------------------------------------------------------------- |
| New Go HTTP service | go-developer, observability-instrumentation |
| Go service with database | go-developer, observability-instrumentation |
| CI/CD pipeline | devops-automation, go-developer (if Go artifacts involved) |
| Backstage catalog + TechDocs | dev-portal-manager |
| New technology adoption | create-usage-rules, address-usage-gaps |
| OpenSpec change (standard) | determined by ## Agent Skills table in design.md |
When two loaded skills give conflicting guidance:
--decision entry via td log explaining which guidance was
followed and why--blocker and create a research task:
td create "Create skill: <name>" --type task --parent <change-root-id>tools
<!--VITE PLUS START--> # Using Vite+, the Unified Toolchain for the Web This project is using Vite+, a unified toolchain built on top of Vite, Rolldown, Vitest, tsdown, Oxlint, Oxfmt, and Vite Task. Vite+ wraps runtime management, package management, and frontend tooling in a single global CLI called `vp`. Vite+ is distinct from Vite, but it invokes Vite through `vp dev` and `vp build`. ## Vite+ Workflow `vp` is a global binary that handles the full development lifecycle. Run `vp help` to pr
development
Guide for building performant data tables. Uses tanstack-table for table logic (sorting, filtering, pagination) and tanstack-virtual for rendering large datasets efficiently.
development
Expert guidance for building observable, expressive, and fault-tolerant TypeScript applications using the effect-ts/effect ecosystem. Covers Effect<A, E, R> type, error management, dependency injection via Layers, observability (logging, metrics, tracing), concurrency with Fibers, retry/scheduling, Schema validation, Streams, and Sinks.
tools
Complete E2E (end-to-end) and integration testing skill for TypeScript/NestJS projects using Jest, real infrastructure via Docker, and GWT pattern. ALWAYS use this skill when user needs to: **SETUP** - Initialize or configure E2E testing infrastructure: - Set up E2E testing for a new project - Configure docker-compose for testing (Kafka, PostgreSQL, MongoDB, Redis) - Create jest-e2e.config.ts or E2E Jest configuration - Set up test helpers for database, Kafka, or Redis - Configure .env.e2e environment variables - Create test/e2e directory structure **WRITE** - Create or add E2E/integration tests: - Write, create, add, or generate e2e tests or integration tests - Test API endpoints, workflows, or complete features end-to-end - Test with real databases, message brokers, or external services - Test Kafka consumers/producers, event-driven workflows - Working on any file ending in .e2e-spec.ts or in test/e2e/ directory - Use GWT (Given-When-Then) pattern for tests **REVIEW** - Audit or evaluate E2E tests: - Review existing E2E tests for quality - Check test isolation and cleanup patterns - Audit GWT pattern compliance - Evaluate assertion quality and specificity - Check for anti-patterns (multiple WHEN actions, conditional assertions) **RUN** - Execute or analyze E2E test results: - Run E2E tests - Start/stop Docker infrastructure for testing - Analyze E2E test results - Verify Docker services are healthy - Interpret test output and failures **DEBUG** - Fix failing or flaky E2E tests: - Fix failing E2E tests - Debug flaky tests or test isolation issues - Troubleshoot connection errors (database, Kafka, Redis) - Fix timeout issues or async operation failures - Diagnose race conditions or state leakage - Debug Kafka message consumption issues **OPTIMIZE** - Improve E2E test performance: - Speed up slow E2E tests - Optimize Docker infrastructure startup - Replace fixed waits with smart polling - Reduce beforeEach cleanup time - Improve test parallelization where safe Keywords: e2e, end-to-end, integration test, e2e-spec.ts, test/e2e, Jest, supertest, NestJS, Kafka, Redpanda, PostgreSQL, MongoDB, Redis, docker-compose, GWT pattern, Given-When-Then, real infrastructure, test isolation, flaky test, MSW, nock, waitForMessages, fix e2e, debug e2e, run e2e, review e2e, optimize e2e, setup e2e