skills/using-agent-skills/SKILL.md
Discovers and invokes agent skills. Use when starting a session or when you need to discover which skill applies to the current task. This is the meta-skill that governs how all other skills are discovered and invoked.
npx skillsauth add SystangoTechnologies/agent-skills using-agent-skillsInstall 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.
Agent Skills is a collection of engineering workflow skills organized by development phase. Each skill encodes a specific process that senior engineers follow. This meta-skill helps you discover and apply the right skill for your current task.
When a task arrives, identify the development phase and apply the corresponding skill:
Task arrives
│
├── simple task/user doesn't want spec-driven? ──→ Don't apply Spec driven, continue normally
├── Unfamiliar existing codebase, no .context/ docs? ──→ brownfield-discovery
├── New project/feature/change? ──→ spec-driven-development
├── Have a spec, need tasks? ──────→ planning-and-task-breakdown
├── Implementing code? ────────────→ incremental-implementation
│ ├── UI work? ─────────────────→ frontend-ui-engineering
│ ├── API work? ────────────────→ api-and-interface-design
│ ├── Need better context? ─────→ context-engineering
│ └── Need doc-verified code? ───→ source-driven-development
├── Writing/running tests? ────────→ generate-unit-tests
├── Something broke? ──────────────→ debugging-and-error-recovery
├── Reviewing code? ───────────────→ code-review-and-quality
│ ├── Security concerns? ───────→ security-and-hardening
│ └── Performance concerns? ────→ performance-optimization
└── Writing docs/ADRs? ───────────→ documentation-and-adrs
These behaviors apply at all times, across all skills. They are non-negotiable.
Before implementing anything non-trivial, explicitly state your assumptions:
ASSUMPTIONS I'M MAKING:
1. [assumption about requirements]
2. [assumption about architecture]
3. [assumption about scope]
→ Correct me now or I'll proceed with these.
Don't silently fill in ambiguous requirements. The most common failure mode is making wrong assumptions and running with them unchecked. Surface uncertainty early — it's cheaper than rework.
When you encounter inconsistencies, conflicting requirements, or unclear specifications:
Bad: Silently picking one interpretation and hoping it's right. Good: "I see X in the spec but Y in the existing code. Which takes precedence?"
You are not a yes-machine. When an approach has clear problems:
Sycophancy is a failure mode. "Of course!" followed by implementing a bad idea helps no one. Honest technical disagreement is more valuable than false agreement.
Your natural tendency is to overcomplicate. Actively resist it.
Before finishing any implementation, ask:
If you build 1000 lines and 100 would suffice, you have failed. Prefer the boring, obvious solution. Cleverness is expensive.
Touch only what you're asked to touch.
Do NOT:
Your job is surgical precision, not unsolicited renovation.
Every skill includes a verification step. A task is not complete until verification passes. "Seems right" is never sufficient — there must be evidence (passing tests, build output, runtime data).
These are the subtle errors that look like productivity but create problems:
Check for an applicable skill before starting work. Skills encode processes that prevent common mistakes.
Skills are workflows, not suggestions. Follow the steps in order. Don't skip verification steps.
Multiple skills can apply. A feature implementation might involve spec-driven-development → planning-and-task-breakdown → incremental-implementation → generate-unit-tests→ code-review-and-quality→ shipping-and-launch in sequence.
When in doubt, start normally. If the task is non-trivial and there's no spec, continue normally, DON'T apply spec-driven-development skill. Also, if user wants to avoid applying spec-driven then let him continue in normal fashion. We don't want to use skills all the time.
When transitioning between phases, verify the exit criteria of the previous phase before proceeding:
| Transition | Verify before proceeding |
|---|---|
| Plan → Build | Every task has a Unit Tests (deferred) section. No task deliverable is a test file. No gate requires test execution (npm test). |
| Build → Test | All build tasks marked [x] in specs/tasks/todo.md. No test files created during build. Full build succeeds. |
| Test → Review | All - [x] Tests written checkboxes checked in deferred sections. npm test passes. No source files modified during test phase. |
Anti-pattern: Collapsing build and test into a single phase. Even for small projects, the separation prevents coupling test structure to implementation details. Tests written after implementation reveal which behaviors matter most — tests written during implementation often couple to implementation choices rather than requirements.
For a complete feature, the typical skill sequence is:
0. brownfield-discovery → Map existing codebase (skip for greenfield)
1. spec-driven-development → Define what we're building
2. planning-and-task-breakdown → Break into verifiable chunks
3. context-engineering → Load the right context
4. source-driven-development → Verify against official docs
5. incremental-implementation → Build slice by slice
6. generate-unit-tests → Prove each slice works with unit test cases
7. code-review-and-quality → Review before merge
8. documentation-and-adrs → Document decisions
9. shipping-and-launch → Deploy safely
Not every task needs every skill. A bug fix might only need: debugging-and-error-recovery → code-review-and-quality.
| Phase | Skill | One-Line Summary | |-------|-------|-----------------| | Discover | brownfield-discovery | Map tech, architecture, conventions, concerns of existing codebase | | Define | spec-driven-development | Requirements and acceptance criteria before code | | Plan | planning-and-task-breakdown | Decompose into small, verifiable tasks | | Build | incremental-implementation | Thin vertical slices, test each before expanding | | Build | context-engineering | Right context at the right time | | Build | frontend-ui-engineering | Production-quality UI with accessibility | | Build | api-and-interface-design | Stable interfaces with clear contracts | | Verify | generate-unit-tests | Create unit tests | | Verify | debugging-and-error-recovery | Reproduce → localize → fix → guard | | Review | code-review-and-quality | Five-axis review with quality gates | | Review | security-and-hardening | OWASP prevention, input validation, least privilege | | Review | performance-optimization | Measure first, optimize only what matters | | Ship | documentation-and-adrs | Document the why, not just the what | | Ship | shipping-and-launch | Pre-launch checklist, monitoring, rollback plan |
tools
Creates specs before coding with mandatory Jira MCP validation and story-key grounding. Use when starting a Jira-tracked feature or significant change and requirements are unclear, ambiguous, or incomplete.
devops
Prepares production launches and updates Jira ticket/task comments. Use when preparing to deploy to production and when launch readiness/progress must be communicated in Jira.
tools
Breaks Jira story work into ordered tasks. Use when you have a story spec and need to break work into implementable tasks with story-scoped files under `jira-spec/{story-id}/`. Use when a task feels too large to start, when you need to estimate scope, or when parallel work is possible.
development
Creates specs before coding. Use when starting a new project, feature, or significant change and no specification exists yet. Use when requirements are unclear, ambiguous, or only exist as a vague idea.