Karvey init
Skill MauricioQuezadaHaintech/karvey/plugins/karvey/skills/karvey-init
Initialize a new Karvey spec. Creates the directory structure, spec.json, and registers the Epic in ClickUp (or PLAN.md if not using ClickUp). Use after karvey-grill or when starting a new feature. Triggers include "karvey init", "iniciar spec", "init spec", "nueva feature", "new feature", "nuevo cambio", "new change", "spec-driven", "SDD", "kiro", "cc-sdd", "gstack", "Garry Tan", "PRD", "iniciar proyecto spec-driven", "start spec-driven project", "nuevo método", "new method", "scaffolding".From its SKILL.md
npx -y skills add MauricioQuezadaHaintech/karvey --skill karvey-initAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
11.3 KB, ~2.8k tokens by cl100k_base, as published. Nobody here has run it
Karvey Init
Purpose
Initialize the structure of a new specification and register the Epic in the management system (ClickUp or Markdown).
Execution steps
Step 1 — Verify pre-spec context
If a karvey-grill summary exists in the conversation, use it to pre-populate the fields.
If not, ask the user: "Briefly describe the problem this change solves."
Step 2 — Generate change-id
If $ARGUMENTS includes the change-id, use it. If not, generate it from the description:
- Format:
{add|fix|update|remove}-{descriptive-url-safe-name} - Examples:
add-call-transfer,fix-webhook-retry,update-tenant-config - Verify it doesn't already exist in
docs/spec/changes/:find docs/spec/changes -maxdepth 1 -type d -name "{change-id}" - If there's a conflict, add a numeric suffix:
add-call-transfer-2
Step 3 — Project config (project.json)
Check whether docs/spec/project.json exists.
If it ALREADY exists: read it and reuse its values. Don't ask anything about this config again.
If it does NOT exist: create it. Pre-populate from the karvey-grill synthesis if it's available in the conversation; ask for or infer the missing fields. The complete schema is in karvey/rules/project-config.md (cite that rule). Fields:
git_platform:github|azure_devops.cloud.provider:azure|gcp|aws|mixed|none.iac_tool:terraform|bicep|pulumi|none.knowledge_sync: decide based onkarvey/rules/knowledge-sync.md— if an Obsidian MCP is available in the session →"obsidian"; if not →"graphify".repos: array of the project's repos. MINIMUM 1 element, never empty.spec_repo: ifreposhas 1 → that same one; if there are several → ask which is the main repo wheredocs/spec/lives.branch_flow: by default{ "feature_prefix": "feature/", "integration": "dev", "production": "master" }.
Write docs/spec/project.json with these values (see the schema in karvey/rules/project-config.md).
Step 3.5 — Enforcement opt-in (hooks)
After creating project.json, ask the user whether they want to enable the Karvey method's enforcement hooks. See the detail in karvey/rules/enforcement.md.
Do you want to enable Karvey's enforcement hooks? (OPT-IN, you can enable them later)
- git-flow hook: blocks direct commits to the integration/production branches and enforces the feature-branch flow (reads branch_flow).
- plan-gate hook: blocks modifications without an approved plan.
If they accept one or both: set the enforcement block in project.json:
"enforcement": {
"git_flow_hook": true,
"plan_gate_hook": true
}
(set true only on the ones the user accepted). Tell the user the hooks are installed by running:
/karvey-guard --install
karvey-guard --install writes the hooks into the project's settings.json, reading branch_flow from project.json.
If they do NOT accept: leave both flags at false. Enforcement is OPT-IN — never force it.
"enforcement": {
"git_flow_hook": false,
"plan_gate_hook": false
}
Step 4 — Ask about the management system
Does this project use ClickUp for management?
If YES (ClickUp):
- Ask: Which project/backlog does it belong to? (get the ClickUp
backlog_list_id) - Read the rule:
rules/clickup-protocol.md
If NO (Markdown):
- A
PLAN.mdwill be created in the change's directory - No additional configuration is required
Step 5 — Collect metadata
Ask (or infer from the pre-spec context):
- Capability: the functional domain it belongs to (e.g.,
call-management,authentication,notifications). If it doesn't exist indocs/spec/specs/, it will be created. - Security Tier: 1-4. Read
rules/security-tiers.mdto guide the user. - Layers involved: DB / Backend / Frontend / Infra (can be multiple)
- Brief description: 1-2 lines of the problem it solves
- Goal (the change's north star): the concrete objective being pursued — what observable, verifiable result defines the success of this change. Ask: "What is this change's north star? What concrete result do we want to achieve?". Save it verbatim in
spec.json(goal) and reflect it as a highlighted section inprd.md.
Note — the goal provides persistence. The
goalremains the change's north star across all phases: each Karvey phase re-reads it on start to pursue the result without stopping until it's achieved, always respecting the plan and security gates.
Step 6 — Create the directory structure
mkdir -p docs/spec/changes/{change-id}/specs/{capability}
mkdir -p docs/spec/specs/{capability} # if it doesn't exist
If docs/spec/specs/{capability}/spec.md doesn't exist, create it:
# Spec: {Capability}
<!-- Living spec for the {capability} capability. Updated when each change is archived. -->
Step 7 — Create spec.json
Write docs/spec/changes/{change-id}/spec.json with:
{
"change_id": "{change-id}",
"capability": "{capability}",
"description": "{brief description}",
"goal": "{the change's north star: concrete, verifiable result that defines success}",
"layers": ["{DB|Backend|Frontend|Infra}"],
"created_at": "{ISO timestamp}",
"updated_at": "{ISO timestamp}",
"language": "es",
"management": "{clickup|markdown}",
"security_tier": {1-4},
"phase": "init",
"clickup": {
"epic_id": "",
"feature_ids": [],
"backlog_list_id": "{list_id or empty}",
"client_tag": "{tag or empty}"
},
"approvals": {
"requirements": { "generated": false, "approved": false },
"mockup": { "generated": false, "approved": false },
"design_graphic": { "generated": false, "approved": false },
"architecture": { "generated": false, "approved": false },
"tasks": { "generated": false, "approved": false },
"infra": { "generated": false, "approved": false },
"qa": { "generated": false, "approved": false },
"deploy": { "generated": false, "approved": false }
}
}
Step 8 — Create prd.md
Write docs/spec/changes/{change-id}/prd.md (formal Product Requirements Document):
# PRD: {change-id}
## Executive summary
{2-3 line synthesis: what's being built and what for}
## 🎯 Goal (the change's north star)
> {concrete, verifiable result that defines the success of this change}
This goal is the north star that all Karvey phases pursue: each phase re-reads it on start to advance toward the result without stopping until it's achieved, respecting the plan and security gates.
## Problem and context
- **Who has it:** {affected users/roles}
- **Current situation:** {how it's solved today or why it hurts}
- **Impact:** {cost of not solving it}
## Objectives and success metrics
{measurable objectives, e.g. "reduce X from N to M", "enable Y for Z users"}
## User stories / main use cases
- As a {role}, I want {action} so that {benefit}.
- {…}
## Scope (in scope)
- {what IS part of this change}
## Out of scope
- {what is NOT included and why}
## Stakeholders
{who requests, who approves, who is impacted}
## Constraints
- Security Tier: {N} — {justification}
- Prerequisite dependencies: {list}
## Acceptance criteria
{verifiable conditions to consider the change complete}
Step 9A — Create the Epic in ClickUp (if management=clickup)
Read credentials from .connections.json (see rules/clickup-protocol.md). If it doesn't exist, create it and add it to .gitignore before continuing.
Determine the next Epic number by searching in ClickUp:
clickup_search
keywords: "E{1..99}"
filters.location.categories: ["{backlog_list_id}"]
Create the Epic:
clickup_create_task
name: "E{n} {Epic name}"
list_id: "{backlog_list_id}"
task_type: "Epic"
description: (see format in the rules)
tags: ["{client_tag}"]
Update spec.json with clickup.epic_id.
Epic description format:
E{n}: {Epic name}
Definition:
{2-3 paragraph description: what problem it solves, for whom, why it matters}
Strategic Value:
{business impact}
Security Tier: {N} — {justification}
Design Decisions:
(pending — completed in karvey-architecture)
Features:
(pending — completed in karvey-requirements)
Built with the Karvey Method
Step 9B — Create PLAN.md (if management=markdown)
Write docs/spec/changes/{change-id}/PLAN.md:
# Plan: {change-id}
**Capability:** {capability} | **Security Tier:** {N} | **Layers:** {list}
**Created:** {date} | **Status:** 🟡 In progress
---
## Epic: {Name}
### Description
{problem, who, impact}
### Strategic value
{business impact}
### Design decisions
| Topic | Decision |
|------|----------|
| (pending — karvey-architecture) | |
---
## Features
(pending — karvey-requirements)
---
## Tasks
(pending — karvey-tasks)
---
## Task status
| Task | Status | Estimated time | Actual time |
|------|--------|----------------|-------------|
| (pending) | | | |
---
## History
| Date | Phase | Action |
|-------|------|--------|
| {date} | init | Spec initialized |
Step 9C — Update the knowledge graph
Sync knowledge per karvey/rules/knowledge-sync.md (Obsidian if available; at minimum /graphify docs/spec/ --update) to reflect the documents created.
If docs/spec/graphify-out/ doesn't exist (first time in the project), invoke /graphify docs/spec/ without --update.
Step 10 — Final output
✅ Spec initialized: docs/spec/changes/{change-id}/
Project config: docs/spec/project.json (created | read)
Files created:
- docs/spec/changes/{change-id}/spec.json
- docs/spec/changes/{change-id}/prd.md
- docs/spec/changes/{change-id}/PLAN.md (if markdown)
- docs/spec/specs/{capability}/spec.md (if new capability)
Management: {ClickUp Epic E{n} created | PLAN.md created}
Security Tier: {N}
Next step:
/karvey-requirements {change-id}
Safety
- If
docs/spec/changes/{change-id}already exists with aspec.json, ask before overwriting - If ClickUp fails, offer to continue in markdown mode as a fallback
- Validate that the
change-idis URL-safe (only lowercase letters, numbers, and hyphens)
Advance to the next phase
When you finish this phase and have the corresponding approval, actively ask the user: "Shall we advance to the Requirements phase now?"
- If they confirm → run
/karvey-requirements {change-id}. - If they prefer to review or adjust first → wait. Advancing is always with the user's OK (a gate of the method).
- If you resume in another session,
/karvey {change-id}indicates which phase you're on and which one comes next.
Part of the Karvey™ Method — © HainTech, by Mauricio Quezada Ibáñez · Apache 2.0 · see karvey/LICENSE and karvey/TRADEMARK.md. Karvey = Afán, an ona/selknam word.
What ships with it: 4 files
11.6 KB alongside SKILL.md
rules/
- clickup-protocol.md4.2 KB
- ears-format.md2.0 KB
- living-specs.md3.3 KB
- security-tiers.md2.0 KB
Gives 0 of the 12 instructions most plan spec skills give in ~2.8k tokens
Counted across 1,099 of the 1,860 authors here whose files we hold, read 2026-08-07
- Ask one question at a timein 51 of 1099
- Break plans into vertical slicesin 29 of 1099, across 11 files
- Publish issues in dependency orderin 27 of 1099, across 9 files
- Iterate until user approves the breakdownin 25 of 1099, across 7 files
- Explore the repository to understand the codebase statein 24 of 1099, across 7 files
- Use domain glossary vocabularyin 23 of 1099, across 5 files
- Apply correct triage labels to published issuesin 23 of 1099, across 5 files
- Prefer AFK slices over HITLin 22 of 1099, across 7 files
- Write a specification before writing any codein 22 of 1099, across 14 files
- Write failing tests before implementation codein 22 of 1099, across 20 files
- Ask clarifying questions until requirements are concretein 21 of 1099, across 13 files
- Respect existing architecture decision recordsin 20 of 1099, across 5 files
Said here and by no other author read
- use grill summary to pre-populate fields
- generate url-safe change-id
- write spec.json for the change
- write prd.md for the change
- create epic in clickup if configured
- update knowledge graph after creation
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.