Maintains feature documentation in .agents/features/ and performs mandatory feature overlap detection before any new feature is proposed. Also builds a shared domain vocabulary for Activepieces. Use when the user asks to define domain terms, build a glossary, harden terminology, create ubiquitous language, references "domain model" or "DDD", or asks about adding a new feature.
Maintain per-feature documentation in .agents/features/, establish a shared vocabulary for the Activepieces domain, and prevent redundant features by detecting overlap with existing functionality before any new work begins.
Activate this skill when the user:
Before writing a single line of code or proposing a design for a new feature, you MUST check for existing features with similar or overlapping functionality.
Search checklist — complete all five before concluding:
Feature docs — read all .md files in .agents/features/ to understand what features already exist, what they cover, and how they work. This is the primary source of truth for feature inventory.
Components / services / hooks — use the Glob tool to find files whose names relate to the proposed concept (e.g., packages/**/*<keyword>*.{ts,tsx}), then use the Grep tool to search file contents for the keyword. Also search by directory name patterns (e.g., packages/server/api/src/app/<concept>/).
Route definitions — use the Grep tool to check whether an API route already covers the use case: search for the keyword in packages/server/api/src with glob *.ts.
Shared types — use the Grep tool to inspect packages/shared/src/ for existing type definitions or enums that represent the concept.
Feature flags / plan limits — use the Grep tool to search packages/shared/src/lib/ for any existing capability or plan flag that may gate the feature.
Decision rule:
| Finding | Action |
|---|---|
| Close match exists | Present the match to the user. Recommend extending the existing feature. Do NOT proceed with a new feature without explicit user approval. |
| Partial overlap | Present overlapping parts. Ask whether the new feature should be merged into the existing one or kept separate, and document the rationale. |
| No match | Confirm to the user that no overlap was found, then proceed with the new feature design. |
Always present your findings to the user before proceeding. Never silently skip this step.
Every feature in Activepieces must have a corresponding .md file in .agents/features/. This is a living registry that agents and developers use to understand what exists before building something new.
After the feature is implemented, create a new file at .agents/features/<feature-name>.md with this structure:
# <Feature Name>
## Summary
One-paragraph description of what this feature does and why it exists.
## Key Files
- `packages/web/src/features/<path>` — frontend components
- `packages/server/api/src/app/<path>` — backend service/controller
- `packages/shared/src/lib/<path>` — shared types
## Edition Availability
Which editions support this feature (Community, Enterprise, Cloud).
## Domain Terms
Key terms used by this feature (link to glossary definitions if they exist).
After making changes to a feature, update its .agents/features/<feature-name>.md to reflect:
This is not optional. Every PR that changes a feature's behavior must include an update to its feature doc.
As you read the conversation, collect every noun, verb, or phrase that:
Before updating the glossary, surface any of the following to the user for resolution:
| Problem type | Example | How to flag |
|---|---|---|
| Ambiguity — same word, different meanings | "connection" means both a saved credential and a live socket | List both usages; ask which meaning should be canonical |
| Synonym collision — different words, same concept | "run" vs "execution" vs "flow run" | Identify the preferred term; mark the others as aliases to avoid |
| Undefined jargon — term used but never defined | "piece" first appears without explanation | Ask for a one-sentence definition |
Do not silently resolve ambiguities — always confirm with the user.
.agents/features/GLOSSARY.mdCreate or update this file as the central domain glossary. Structure it as follows:
# Domain Glossary — Activepieces
> Last updated: <date>
## <Domain Cluster Name>
| Term | Definition (one sentence) | Aliases to avoid | Related terms |
|---|---|---|---|
| Flow | A named automation consisting of a trigger and one or more steps. | workflow, automation, pipeline | Step, Trigger, Run |
| ... | ... | ... | ... |
## <Next Domain Cluster Name>
...
Formatting rules:
When writing or reviewing code, use only the canonical term from the glossary. If you see a deprecated alias in existing code, inform the user about each occurrence and let them decide whether to rename it now or track it as technical debt for later.
When this skill is triggered a second or subsequent time in the same session:
.agents/features/ docs and GLOSSARY.md (do not recreate from scratch).| Task | Action |
|---|---|
| New feature requested | Run Step 1 (overlap detection via .agents/features/ + codebase search) — always |
| Feature implemented or modified | Update its .agents/features/<name>.md via Step 2 |
| New term encountered | Add to glossary via Step 3 |
| Ambiguity detected | Flag to user before resolving |
| Skill re-invoked | Follow Step 4 (incremental update) |
| Deprecated alias found in code | Inform user; let them decide to rename now or defer as tech debt |
.agents/features/ and the codebase before every new feature, no exceptions..agents/features/<name>.md.