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.
@@ -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.