reins-method 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ADAPTERS.md +117 -0
- package/HISTORIC_MODE.md +52 -0
- package/LICENSE +21 -0
- package/MIGRATION.md +82 -0
- package/README.md +332 -0
- package/SKILLS.md +111 -0
- package/agents/README.md +61 -0
- package/bin/reins +750 -0
- package/core/evaluation/README.md +134 -0
- package/core/evaluation/templates/monthly.md +121 -0
- package/core/evaluation/templates/task-entry.md +20 -0
- package/core/skills/code-review/SKILL.md +115 -0
- package/core/skills/party-mode/SKILL.md +76 -0
- package/core/skills/reins-business-analyst/SKILL.md +51 -0
- package/core/skills/reins-product-manager/SKILL.md +50 -0
- package/core/skills/reins-senior-engineer/SKILL.md +51 -0
- package/core/skills/reins-system-architect/SKILL.md +48 -0
- package/core/skills/reins-technical-writer/SKILL.md +47 -0
- package/core/skills/reins-ux-designer/SKILL.md +48 -0
- package/core/skills/skill-creator/SKILL.md +112 -0
- package/core/templates/adapter.md +94 -0
- package/core/templates/context.md +42 -0
- package/core/templates/current_task.md +37 -0
- package/core/templates/plan.md +32 -0
- package/core/templates/skill.md +67 -0
- package/core/templates/spec.md +62 -0
- package/core/workflow/1_orchestrator.md +224 -0
- package/core/workflow/2_new_task.md +133 -0
- package/core/workflow/3_implement.md +118 -0
- package/core/workflow/4_close_task.md +166 -0
- package/package.json +30 -0
- package/tools/installer/cli.js +231 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: reins-technical-writer
|
|
3
|
+
description: >
|
|
4
|
+
Adopt the perspective of Pam, a Technical Writer fluent in CommonMark, DITA, and
|
|
5
|
+
OpenAPI, who translates complexity into clarity and writes for the reader with
|
|
6
|
+
zero context — favoring diagrams over walls of text. Use when writing or
|
|
7
|
+
restructuring SPECs, READMEs, API docs, or architecture decision records.
|
|
8
|
+
tags: [persona, party-mode, docs]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Persona — Pam, Technical Writer
|
|
12
|
+
|
|
13
|
+
## Trigger
|
|
14
|
+
|
|
15
|
+
- The user asks for a "technical writer" perspective, or to review/restructure a
|
|
16
|
+
SPEC, README, ADR, or API doc for clarity
|
|
17
|
+
- A piece of documentation has grown into a wall of text and needs structure
|
|
18
|
+
- Invoked as part of `core/skills/party-mode/SKILL.md` when docs/spec clarity is the
|
|
19
|
+
concern
|
|
20
|
+
|
|
21
|
+
## Context
|
|
22
|
+
|
|
23
|
+
Pam's lens:
|
|
24
|
+
- **Write for the reader with zero context**: assume the reader has never seen this
|
|
25
|
+
task, this codebase, or this conversation — every term that needs defining gets
|
|
26
|
+
defined.
|
|
27
|
+
- **Structure first**: headings, short paragraphs, lists, tables — never a wall of
|
|
28
|
+
text.
|
|
29
|
+
- **Diagrams over prose**: if a flow, hierarchy, or sequence can be shown with an
|
|
30
|
+
ASCII/Mermaid diagram or table, prefer that over describing it in sentences.
|
|
31
|
+
- **CommonMark / DITA / OpenAPI fluency**: use correct, portable Markdown; for API
|
|
32
|
+
surfaces, think in terms of OpenAPI-shaped descriptions (endpoint, method,
|
|
33
|
+
request/response shape) even if not formally written as OpenAPI.
|
|
34
|
+
|
|
35
|
+
## Steps
|
|
36
|
+
|
|
37
|
+
1. Identify the document or section under review (SPEC, README, ADR, API doc, etc.).
|
|
38
|
+
2. Identify where prose should become a list, table, or diagram.
|
|
39
|
+
3. Check for: missing context (what exists today), missing "why", inconsistent
|
|
40
|
+
terminology, and any term a zero-context reader wouldn't know.
|
|
41
|
+
4. Propose a restructured version (or concrete edits) — do not rewrite content the
|
|
42
|
+
user hasn't asked to change, only its structure/clarity.
|
|
43
|
+
|
|
44
|
+
## Output
|
|
45
|
+
|
|
46
|
+
Either a restructured version of the document/section, or a list of concrete,
|
|
47
|
+
file:line-referenced suggestions if a full rewrite isn't warranted.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: reins-ux-designer
|
|
3
|
+
description: >
|
|
4
|
+
Adopt the perspective of Erin, a UX Designer who is deeply empathetic and thinks
|
|
5
|
+
in user flows and friction points — every decision must serve a genuine user need,
|
|
6
|
+
not an assumption about one. Use for tasks with a user-facing UI or
|
|
7
|
+
interaction-flow dimension.
|
|
8
|
+
tags: [persona, party-mode, ux]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Persona — Erin, UX Designer
|
|
12
|
+
|
|
13
|
+
## Trigger
|
|
14
|
+
|
|
15
|
+
- The user asks for a "UX" or "design" perspective on a task
|
|
16
|
+
- A task involves a UI, user-facing flow, form, or interaction change
|
|
17
|
+
- Invoked as part of `core/skills/party-mode/SKILL.md` when the task is user-facing
|
|
18
|
+
|
|
19
|
+
## Context
|
|
20
|
+
|
|
21
|
+
Erin's lens:
|
|
22
|
+
- **Deep empathy + edge-case rigor**: think through the happy path from the user's
|
|
23
|
+
point of view, then immediately ask "what if they're on mobile / have no data /
|
|
24
|
+
made a mistake / are using a screen reader?"
|
|
25
|
+
- **Thinks in user flows and friction points**: trace the full flow step by step and
|
|
26
|
+
name every point where a real user could get stuck, confused, or drop off.
|
|
27
|
+
- **Start simple, evolve through feedback**: prefer the simplest interaction that
|
|
28
|
+
satisfies the job-to-be-done (see reins-product-manager / Jim) over a feature-rich first
|
|
29
|
+
version.
|
|
30
|
+
Note what could be iterated on later, but don't over-build now.
|
|
31
|
+
- **Every decision serves a genuine user need, not an assumption about one**: if a UI
|
|
32
|
+
element or flow step doesn't map to a real, evidenced need, question it.
|
|
33
|
+
|
|
34
|
+
## Steps
|
|
35
|
+
|
|
36
|
+
1. Describe the simplest version of the user flow that satisfies the task's
|
|
37
|
+
job-to-be-done.
|
|
38
|
+
2. Walk the flow step by step and list the friction points and edge cases it must
|
|
39
|
+
handle (empty states, errors, loading, permissions, accessibility).
|
|
40
|
+
3. Note anything proposed that adds complexity based on an assumption about user
|
|
41
|
+
need rather than evidence — flag for the user to confirm it's actually needed.
|
|
42
|
+
4. If relevant, suggest what a "v2" iteration could add later (out of scope now).
|
|
43
|
+
|
|
44
|
+
## Output
|
|
45
|
+
|
|
46
|
+
A short note: the simple flow, the friction points/edge cases it must cover, and any
|
|
47
|
+
assumption-driven complexity flags — feeding into the breakdown
|
|
48
|
+
(`core/workflow/2_new_task.md` Step 3) and the SPEC's "Edge cases" section.
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skill-creator
|
|
3
|
+
description: Guides the user through creating a new REINS skill (or adapter pack skill) — asks the right questions, drafts a SKILL.md following the contract in core/templates/skill.md, and writes it to the right location.
|
|
4
|
+
tags: [meta, authoring]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill Creator — Darryl
|
|
8
|
+
|
|
9
|
+
A meta-skill for creating new REINS skills. Use it whenever the user wants to add a new
|
|
10
|
+
on-demand procedure — e.g. "create a skill for X", "I want a skill that does Y", or
|
|
11
|
+
when invoked via `reins new-skill <name>`.
|
|
12
|
+
|
|
13
|
+
## Darryl — Guide
|
|
14
|
+
|
|
15
|
+
Adopt Darryl's voice for this skill: practical and no-nonsense. He walks you through
|
|
16
|
+
each step of creating a new skill without wasting your time, knows the process cold,
|
|
17
|
+
and gets you to the finish line. Competent, direct, slightly done with everyone's
|
|
18
|
+
nonsense — but he'll make sure you do it right.
|
|
19
|
+
|
|
20
|
+
Opening voice: *"Alright, let's build this. Follow the steps, don't skip anything,
|
|
21
|
+
and when we're done you run `reins sync`. That's it."*
|
|
22
|
+
|
|
23
|
+
## Trigger
|
|
24
|
+
|
|
25
|
+
- The user explicitly asks to create, scaffold, or draft a new skill
|
|
26
|
+
- `reins new-skill <name>` was run and the CLI created a placeholder that needs filling in
|
|
27
|
+
|
|
28
|
+
## Context
|
|
29
|
+
|
|
30
|
+
Read `core/templates/skill.md` for the required `SKILL.md` format before drafting
|
|
31
|
+
anything. Determine **where the skill belongs**:
|
|
32
|
+
|
|
33
|
+
| Skill applies to... | Location |
|
|
34
|
+
|---|---|
|
|
35
|
+
| Everyone, any stack (rare — keep core minimal) | `~/.reins/core/skills/reins-<function>/` |
|
|
36
|
+
| Only this user, any project | `~/.reins/user/skills/reins-<function>/` |
|
|
37
|
+
| Only a specific stack/company (the common case) | `~/.reins/user/adapters/<adapter>/skills/<function>/` |
|
|
38
|
+
|
|
39
|
+
If unsure, ask the user.
|
|
40
|
+
|
|
41
|
+
### Naming
|
|
42
|
+
|
|
43
|
+
Every REINS skill is named after **what it does** (`reins-<function>`, e.g.
|
|
44
|
+
`reins-business-analyst`, `reins-code-review`), never after a character/persona name —
|
|
45
|
+
even if the skill has a persona with a name for flavor (like Darryl here, or Toby,
|
|
46
|
+
Pam, Jim...). The user may refer to a skill by its persona's name in conversation,
|
|
47
|
+
but the skill's `name:` field and directory must be the role-based `reins-<function>`
|
|
48
|
+
name.
|
|
49
|
+
|
|
50
|
+
- Core/user skills: directory and `name:` are usually `reins-<function>` (the `reins-`
|
|
51
|
+
prefix as part of the name itself).
|
|
52
|
+
- Adapter skills: directory and `name:` are usually `<function>` (no `reins-`
|
|
53
|
+
prefix) — `reins sync` assembles the registered name as
|
|
54
|
+
`reins-<adapter>-<function>` automatically regardless.
|
|
55
|
+
|
|
56
|
+
**The `reins-` prefix is suggested, not mandatory — `reins sync` adds it automatically
|
|
57
|
+
to any core/user skill whose directory doesn't already have it, so skills are always
|
|
58
|
+
registered as `reins-*` either way.** Ask the user only for the bare function name
|
|
59
|
+
(e.g. "business analyst" → `business-analyst`). Darryl then:
|
|
60
|
+
- Suggests `reins-business-analyst` (core/user) or `business-analyst` (adapter,
|
|
61
|
+
becomes `reins-<adapter>-business-analyst` via `reins sync`) as the default.
|
|
62
|
+
- If the user prefers the bare name without `reins-` for a core/user skill, that's
|
|
63
|
+
fine — `reins sync` will still register it as `reins-business-analyst`.
|
|
64
|
+
If the user already typed a name starting with `reins-` (or `reins-<adapter>-`) for an
|
|
65
|
+
adapter skill, Darryl strips it back to the bare function name first, so the prefix
|
|
66
|
+
is never doubled.
|
|
67
|
+
|
|
68
|
+
## Flow
|
|
69
|
+
|
|
70
|
+
1. **Darryl asks** what the skill should do and when it should trigger:
|
|
71
|
+
- What should this skill do, in one or two sentences?
|
|
72
|
+
- When should it trigger — what phrases, file patterns, or situations?
|
|
73
|
+
- Is it read-only, or does it create/modify/delete files?
|
|
74
|
+
- Does it apply to a specific stack/adapter, or is it general-purpose?
|
|
75
|
+
- What's the role/function this skill represents (e.g. "business analyst",
|
|
76
|
+
"deploy checklist")? Darryl proposes `reins-<function>` (or `<function>` for
|
|
77
|
+
adapter skills) as the name — see Naming — but goes with whatever the user
|
|
78
|
+
prefers.
|
|
79
|
+
|
|
80
|
+
2. **Darryl guides the user through `core/templates/skill.md`, step by step**:
|
|
81
|
+
- `name`: `reins-<function>` (core/user) or `<function>` (adapter) — see Naming
|
|
82
|
+
- `description`: specific enough that the agent can decide when to load it
|
|
83
|
+
- `## Trigger`, `## Context`, `## Steps`, `## Output` sections filled in based on
|
|
84
|
+
step 1
|
|
85
|
+
- Call out whether the skill performs destructive or irreversible actions — the
|
|
86
|
+
`## Steps` section must then require explicit confirmation before each such
|
|
87
|
+
action
|
|
88
|
+
- Call out whether `allowed-tools` should be restricted (e.g. `bash` only,
|
|
89
|
+
read-only, or `Agent` for subagent-spawning skills)
|
|
90
|
+
|
|
91
|
+
3. **Show the draft to the user** before writing anything.
|
|
92
|
+
|
|
93
|
+
4. **Darryl writes the file** to the location determined in Context (default
|
|
94
|
+
`~/.reins/user/skills/reins-<function>/SKILL.md` unless the user said otherwise),
|
|
95
|
+
only after the user confirms the draft.
|
|
96
|
+
|
|
97
|
+
5. If this skill belongs to an adapter that doesn't exist yet, suggest running
|
|
98
|
+
`reins new-adapter <name>` first (or offer to do it).
|
|
99
|
+
|
|
100
|
+
6. **Darryl reminds the user to run `reins sync`** — every time, no exceptions. This
|
|
101
|
+
registers the skill with Claude Code's native skill discovery
|
|
102
|
+
(`~/.claude/skills/reins-...`) and refreshes the "Available skills" list in other
|
|
103
|
+
agents' bridge files. (Skills created via `reins new-skill <name>` are already
|
|
104
|
+
synced automatically.)
|
|
105
|
+
|
|
106
|
+
Closing voice: *"Done. Now run `reins sync`. Don't forget."*
|
|
107
|
+
|
|
108
|
+
## Output
|
|
109
|
+
|
|
110
|
+
- The path to the new `SKILL.md`
|
|
111
|
+
- A one-line summary of when it will trigger
|
|
112
|
+
- Darryl's reminder to run `reins sync`
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Adapter Pack Template
|
|
2
|
+
|
|
3
|
+
An **adapter** teaches REINS about a specific stack, company, or team's conventions. Adapters
|
|
4
|
+
are user-owned: they live in `~/.reins/user/adapters/<name>/`, are never modified by `reins update`,
|
|
5
|
+
and can be shared (or kept private) independently of REINS core.
|
|
6
|
+
|
|
7
|
+
Scaffold a new one with:
|
|
8
|
+
```
|
|
9
|
+
reins new-adapter <name>
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Required structure
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
<name>/
|
|
18
|
+
├── ADAPTER.md ← metadata (this file's frontmatter, see below)
|
|
19
|
+
├── standards/
|
|
20
|
+
│ ├── floor.md ← non-negotiable conventions for this stack (precedence: 1)
|
|
21
|
+
│ └── personal.md ← optional personal style on top of floor.md (precedence: 2)
|
|
22
|
+
├── workflow/
|
|
23
|
+
│ └── 3_implement.md ← optional override of core/workflow/3_implement.md
|
|
24
|
+
└── skills/ ← optional, stack-specific skills
|
|
25
|
+
└── <skill-name>/
|
|
26
|
+
└── SKILL.md
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Only `ADAPTER.md` and `standards/floor.md` are required. Everything else is optional —
|
|
30
|
+
omit `workflow/3_implement.md` to fall back to the generic development phase in
|
|
31
|
+
`core/workflow/3_implement.md`.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## `ADAPTER.md` frontmatter
|
|
36
|
+
|
|
37
|
+
```yaml
|
|
38
|
+
---
|
|
39
|
+
name: <name> # matches the directory name
|
|
40
|
+
stacks: [ruby, node] # marker-derived stack identifiers this adapter applies to
|
|
41
|
+
# (see core/workflow/1_orchestrator.md §2 for the marker table)
|
|
42
|
+
author: <your name or handle>
|
|
43
|
+
version: 1.0.0
|
|
44
|
+
description: >
|
|
45
|
+
One paragraph: what this adapter is for, and what conventions/skills it adds.
|
|
46
|
+
---
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The orchestrator matches `stacks` against the markers it detects in the project root.
|
|
50
|
+
If more than one installed adapter matches, all matching adapters are loaded.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## `standards/floor.md`
|
|
55
|
+
|
|
56
|
+
The non-negotiable baseline for this stack — naming conventions, architectural rules,
|
|
57
|
+
test conventions, anything that must always be applied without exception. If
|
|
58
|
+
`standards/personal.md` ever contradicts this file, the orchestrator stops and asks
|
|
59
|
+
the user to resolve the conflict.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## `workflow/3_implement.md` (optional override)
|
|
64
|
+
|
|
65
|
+
Only create this if the stack needs a development process different from the generic
|
|
66
|
+
SPEC → PLAN → IMPLEMENT → VERIFY → CONFIRM loop in `core/workflow/3_implement.md` —
|
|
67
|
+
for example, a strict TDD/STDD cycle (SPEC → TESTS → REVIEW → RED → GREEN) for a
|
|
68
|
+
backend with a test suite, or an SDD cycle (SPEC → IMPLEMENT → VISUAL REVIEW →
|
|
69
|
+
CONFIRM) for a UI-only frontend with no automated tests.
|
|
70
|
+
|
|
71
|
+
Use `core/workflow/3_implement.md` as the structural reference — keep the same
|
|
72
|
+
"Permanent constraints" and "Start prompt" sections so behavior stays predictable
|
|
73
|
+
across adapters.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## `skills/`
|
|
78
|
+
|
|
79
|
+
Stack-specific, on-demand skills (e.g. a scaffold generator, a library reference
|
|
80
|
+
browser, a hotfix workflow). Follow `core/templates/skill.md` for the format. These
|
|
81
|
+
are never loaded proactively — only invoked when the user asks or the task calls
|
|
82
|
+
for them.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Sharing an adapter
|
|
87
|
+
|
|
88
|
+
Adapters can be:
|
|
89
|
+
- Kept entirely local under `~/.reins/user/adapters/<name>/`
|
|
90
|
+
- Shared as a private git repo and cloned into that path
|
|
91
|
+
- Published publicly if the conventions/skills inside contain nothing proprietary
|
|
92
|
+
|
|
93
|
+
REINS core never inspects adapter contents beyond `ADAPTER.md`'s `stacks:` field and
|
|
94
|
+
the optional `workflow/3_implement.md` override.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: feature # feature | hotfix | bugfix | chore | spike
|
|
3
|
+
stack: # detected stack(s), e.g. ruby, node, python, ruby+node
|
|
4
|
+
status: active # active | paused
|
|
5
|
+
branches: {} # map of component -> branch name, e.g. { backend: feature/123-x, frontend: feature/123-y }
|
|
6
|
+
prs: {} # map of component -> PR URL (empty/null until opened)
|
|
7
|
+
title: # human-readable title
|
|
8
|
+
updated_at: # YYYY-MM-DD
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Context — {{title}}
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Task
|
|
16
|
+
<!-- Filled by the agent at task start. Do not modify. -->
|
|
17
|
+
|
|
18
|
+
## Epic
|
|
19
|
+
<!-- Filled by the agent at task start. Do not modify. -->
|
|
20
|
+
|
|
21
|
+
## Objective (in one sentence)
|
|
22
|
+
<!-- Written by me only. The agent never modifies this field. -->
|
|
23
|
+
|
|
24
|
+
## Breakdown
|
|
25
|
+
<!-- Updated by the agent after each confirmed step. Format: checked = done, unchecked = pending. -->
|
|
26
|
+
<!-- For multi-stack tasks, prefix each step with its component, e.g. "(backend) ..." -->
|
|
27
|
+
|
|
28
|
+
## Current step
|
|
29
|
+
<!-- Updated by the agent at the start of each step. -->
|
|
30
|
+
|
|
31
|
+
## Decisions made
|
|
32
|
+
<!-- Added by the agent only after I explicitly confirm an architecture or approach decision. One line per decision. -->
|
|
33
|
+
|
|
34
|
+
## Open questions / blockers
|
|
35
|
+
<!-- Added by the agent when something is unclear or blocked. -->
|
|
36
|
+
|
|
37
|
+
## SPEC status
|
|
38
|
+
<!-- Updated by the agent. Format: Step N — [not written / approved / implemented] -->
|
|
39
|
+
<!-- SPEC/PLAN files live in ~/.reins/user/projects/<project-slug>/specs/<type>_<slug>/step-NN-{spec,plan}.md -->
|
|
40
|
+
|
|
41
|
+
## My notes
|
|
42
|
+
<!-- Written by me only. The agent never modifies this field. -->
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Current Task — Working Notes
|
|
2
|
+
|
|
3
|
+
This file is an optional companion to the active context file (`core/templates/context.md`).
|
|
4
|
+
Use it when a task benefits from a more detailed surface map than the context's `## Breakdown`
|
|
5
|
+
provides — e.g. a feature touching many files or layers. Adapters may extend this template
|
|
6
|
+
with stack-specific sections (e.g. a frontend adapter might add a "Components affected"
|
|
7
|
+
or "i18n keys" section) — see `core/templates/adapter.md`.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## User value
|
|
12
|
+
<!-- Written by the agent. What becomes easier, faster, safer, or clearer for the user. -->
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Surface map
|
|
17
|
+
<!-- Filled by the agent. List the modules, files, endpoints, or components this task touches. -->
|
|
18
|
+
- [ ] ...
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Constraints and non-negotiables
|
|
23
|
+
<!-- Filled by the agent at task start, from the active adapter's standards. -->
|
|
24
|
+
- [ ] Existing behavior preserved unless SPEC says otherwise
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Verification checklist
|
|
29
|
+
<!-- Filled by the agent before marking a step as done. Adapters may append stack-specific items. -->
|
|
30
|
+
- [ ] Main flow works
|
|
31
|
+
- [ ] Empty / loading / error states handled (if applicable)
|
|
32
|
+
- [ ] No unintended regressions found
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## My notes
|
|
37
|
+
<!-- Written by me only. The agent never modifies this field. -->
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# PLAN Template
|
|
2
|
+
|
|
3
|
+
The PLAN is written by the agent, after reading the SPEC for a step, as part of
|
|
4
|
+
Step 2 of `core/workflow/3_implement.md`. It is saved to:
|
|
5
|
+
|
|
6
|
+
```
|
|
7
|
+
~/.reins/user/projects/<project-slug>/specs/<type>_<slug>/step-NN-plan.md
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
matching the `step-NN-spec.md` it responds to.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
```markdown
|
|
15
|
+
# PLAN: [Same name as the SPEC]
|
|
16
|
+
|
|
17
|
+
## Guarantees covered
|
|
18
|
+
Restate each guarantee from the SPEC and confirm it will be addressed.
|
|
19
|
+
|
|
20
|
+
## Verification approach
|
|
21
|
+
- Automated tests: <files to add/change, or "none — manual review">
|
|
22
|
+
- Manual review steps (if applicable): what the user should see and check
|
|
23
|
+
|
|
24
|
+
## Open questions / risks
|
|
25
|
+
Anything in the SPEC that conflicts with existing code, or any assumption that needs
|
|
26
|
+
confirmation before implementation starts. Empty if none.
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
Once the user approves the PLAN, proceed to Step 3 (Implement) of
|
|
32
|
+
`3_implement.md`.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Skill Template
|
|
2
|
+
|
|
3
|
+
A skill is a single `SKILL.md` file describing an on-demand procedure the agent can
|
|
4
|
+
follow when invoked. Skills are **never loaded proactively** — only when the user
|
|
5
|
+
explicitly asks, or the active workflow phase calls for it.
|
|
6
|
+
|
|
7
|
+
Scaffold a new one with:
|
|
8
|
+
```
|
|
9
|
+
reins new-skill <name>
|
|
10
|
+
```
|
|
11
|
+
or invoke the `skill-creator` meta-skill (`~/.reins/core/skills/skill-creator/SKILL.md`)
|
|
12
|
+
for guided creation.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Required structure
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
<skill-name>/
|
|
20
|
+
└── SKILL.md
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## `SKILL.md` format
|
|
24
|
+
|
|
25
|
+
```yaml
|
|
26
|
+
---
|
|
27
|
+
name: <skill-name>
|
|
28
|
+
description: >
|
|
29
|
+
One or two sentences: what this skill does and when to use it. Be specific —
|
|
30
|
+
this description is what the agent uses to decide whether the skill applies.
|
|
31
|
+
allowed-tools: bash # optional, restrict tool usage if relevant
|
|
32
|
+
tags: [tag1, tag2] # optional, free-form
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
# <Skill Title>
|
|
36
|
+
|
|
37
|
+
## Trigger
|
|
38
|
+
When should this skill be invoked? List explicit phrases, file patterns, or
|
|
39
|
+
situations that should cause the agent to load this skill.
|
|
40
|
+
|
|
41
|
+
## Context
|
|
42
|
+
What does the agent need to know before acting — relevant files, conventions,
|
|
43
|
+
prerequisites, flags to check (e.g. "only valid if `package.json` exists").
|
|
44
|
+
|
|
45
|
+
## Steps
|
|
46
|
+
The procedure, step by step. Be explicit about what requires user confirmation
|
|
47
|
+
before proceeding (especially anything destructive or irreversible).
|
|
48
|
+
|
|
49
|
+
## Output
|
|
50
|
+
What the agent should produce or report back when the skill completes.
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Conventions
|
|
56
|
+
|
|
57
|
+
- Keep skills **read-only by default** unless their purpose is explicitly to scaffold
|
|
58
|
+
or modify files — and even then, preview changes and confirm before writing.
|
|
59
|
+
- Name skills by **what they do**, not after a character/persona (e.g.
|
|
60
|
+
`reins-code-review`, `reins-business-analyst`) — never `persona-<name>`. The `reins-`
|
|
61
|
+
prefix is suggested for core/user skills but not mandatory — `reins sync` adds it
|
|
62
|
+
automatically if missing, so the skill is always registered as `reins-*` either
|
|
63
|
+
way. Adapter skills are usually named without the prefix (`reins sync` assembles
|
|
64
|
+
`reins-<adapter>-<function>` automatically). Avoid generic names that could collide
|
|
65
|
+
across adapters (e.g. prefer `rails-crud-scaffold` over `scaffold`).
|
|
66
|
+
- If a skill only makes sense for a specific stack/company, it belongs in an adapter
|
|
67
|
+
pack (`<adapter>/skills/`), not in `~/.reins/core/skills/` or `~/.reins/user/skills/`.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# SPEC Template
|
|
2
|
+
|
|
3
|
+
A SPEC is written by the user, never by the agent (see `core/workflow/3_implement.md`
|
|
4
|
+
Permanent constraints). For each confirmed step in the breakdown, the SPEC is saved
|
|
5
|
+
to:
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
~/.reins/user/projects/<project-slug>/specs/<type>_<slug>/step-NN-spec.md
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
where `<type>_<slug>` matches the active context file's name (without `.md`), and
|
|
12
|
+
`NN` is the two-digit step number from `## Breakdown`.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
```markdown
|
|
17
|
+
# SPEC: [Feature, refactor, or component name]
|
|
18
|
+
|
|
19
|
+
## Context
|
|
20
|
+
What exists today, where it lives, and what is wrong or missing.
|
|
21
|
+
|
|
22
|
+
## Goal
|
|
23
|
+
What changes and why.
|
|
24
|
+
|
|
25
|
+
## Expected behavior
|
|
26
|
+
### Main flow
|
|
27
|
+
### Secondary flows
|
|
28
|
+
### Edge cases / error states
|
|
29
|
+
|
|
30
|
+
## Guarantees
|
|
31
|
+
- [ ] Guarantee 1
|
|
32
|
+
- [ ] Guarantee 2
|
|
33
|
+
- [ ] Existing entry points / behavior outside this scope are unchanged
|
|
34
|
+
|
|
35
|
+
## Verification
|
|
36
|
+
- [ ] Automated tests: <files / framework, or "none — manual review">
|
|
37
|
+
- [ ] Manual review steps (if applicable)
|
|
38
|
+
|
|
39
|
+
## Architecture decision
|
|
40
|
+
Chosen approach and rationale (if an architecture decision was made prior to this SPEC).
|
|
41
|
+
|
|
42
|
+
## Out of scope
|
|
43
|
+
What explicitly does not change in this step.
|
|
44
|
+
|
|
45
|
+
## Files likely affected
|
|
46
|
+
- [ ] path/to/file
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## PR section
|
|
52
|
+
|
|
53
|
+
When a PR is opened for this task, append to the **highest-numbered**
|
|
54
|
+
`step-NN-spec.md` for the task:
|
|
55
|
+
|
|
56
|
+
```markdown
|
|
57
|
+
## PR
|
|
58
|
+
<url>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Also record it in the context file's frontmatter (`prs`) — see
|
|
62
|
+
`core/workflow/4_close_task.md` Step 6.
|