.cursor/skills/new-feature/SKILL.md
Implements a new feature using docs-first delivery, boundary-driven structure, and skeleton-first execution. Load when adding a route, feature, or new user-visible behavior.
npx skillsauth add poko8nada/pj_docs new-featureInstall 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.
Use this skill when adding a feature, not just when writing code in isolation.
The goal is to choose boundaries deliberately:
Do not create files and layers just to satisfy a template. Create them because they own a distinct reason to change.
Before coding, check whether the repository docs are concrete enough to build from without chat history.
If the task depends on values such as:
and those values are still vague, tighten the docs first.
In this repository, tighten the ADR first.
Do not create docs/spec.md unless the user explicitly asks for it.
If implementation planning is part of the task, the ADR should also record:
Build in this order:
This keeps the design explicit and prevents "done" from meaning "probably works."
A route or handler owns framework-facing concerns.
Typical responsibilities:
Routes should not absorb every detail below them. They should gather inputs, call the right boundary, and own the response contract.
A feature owns nested behavior once the route has supplied explicit inputs.
Typical responsibilities:
Good feature boundaries are driven by one capability, not by a directory rule.
Shared libraries or adapters own reusable capabilities that should not care which route or feature called them.
Typical responsibilities:
If multiple features would need the same low-level behavior, it likely belongs here instead of inside one feature.
When a feature boundary exists, colocate the files that belong to it.
[feature-name]/
├── index.ts
├── [feature].ts
├── [feature].tsx # primary component
├── [feature]-card.tsx # sub-component
├── [feature].types.ts
└── [feature].test.ts
Use index.ts as the public boundary when the feature is imported from
elsewhere.
This pattern includes not only logic and types, but also the UI component(s) that belong to the feature. A [feature].tsx file colocates the view layer alongside its data and business logic, avoiding the need for a separate components/ directory at the feature level.
Do not create a feature slice only because a route has logic.
Keep code local to the route when it is:
Promote route-local code into a feature when:
Practical rule:
Do not create [feature].types.ts just because a template says so.
Create a separate types file only when:
Do not use a types file as a dumping ground for unrelated constants.
It is acceptable to keep medium-sized feature-local UI inside the same boundary.
Good fit:
Promote to shared components only when reuse is real.
Do not split tests by folder name alone. Split them by owned contract.
Use feature tests for:
Use shared library or adapter tests for:
If two test files assert the same behavior at different layers, one of them is probably too low-level or too high-level.
tools
Composite Skill. This skill is used for project planning. Users request that a project plan be created, particularly during the initial stages.
documentation
Core Skill. This skill is for document creation. User ask you to create planning documents, such as requirement and task breakdown.
development
Core Skill. Next.js 15+ App Router architecture guidelines including component patterns, state management with Zustand, server actions, and project structure. Use when developing Next.js applications.
development
Core Skill. HonoX architecture guidelines including file-based routing, Islands pattern, component types, performance optimization, and best practices for full-stack development.