ranni-cli 0.0.0-stage → 0.2.3

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,83 @@
1
+ ---
2
+ name: ranni
3
+ description: Use Ranni's work frontier to pick up, continue, hand off, and close in-flight work that outlives one session or one agent. Use when the repository's relic.yaml declares a work record kind, the developer names a work item such as WORK-042, the current branch name contains a work identity, or the developer asks to track, split, hand off, or check ongoing work.
4
+ ---
5
+
6
+ # Ranni
7
+
8
+ Ranni keeps the living state of in-flight work as ordinary Relic records, so any agent,
9
+ harness, or human can continue it. It never runs agents and has no runtime. You execute
10
+ with whatever this harness offers, and you leave traces the next executor can follow.
11
+
12
+ Ranni requires Relic. Use the Relic skill for knowledge work: roasts, specifications,
13
+ records, and persistence. This skill covers work items only.
14
+
15
+ ## Find the Work
16
+
17
+ 1. Read the `relic.yaml` that Relic selects. The work kind is `work` unless the
18
+ developer names another declared kind. If no work kind is declared, say so and
19
+ continue without Ranni.
20
+ 2. Locate the item. Use the one the developer names, then the identity in the current
21
+ branch name, then a search by subject, using native tools or `relic search --kind work`.
22
+ 3. Read its intent, its current frontier, and the links that matter before acting.
23
+
24
+ A small task needs no work item. Using Ranni creates no obligation.
25
+
26
+ ## Leave Traces
27
+
28
+ Every executor follows the same contract, including you:
29
+
30
+ - the branch name contains the identity, for example `work/WORK-042-push`;
31
+ - every commit carries the trailer `Work: WORK-042`;
32
+ - the pull request title mentions the identity, or its body carries `Work: WORK-042`.
33
+ Mentioning another item in the body ("depends on WORK-041") does not tie the PR to it.
34
+
35
+ To parallelize, use what this harness offers: subagents, sessions, worktrees. Hand each
36
+ executor the identity and these rules, and ask it to rewrite the frontier when it stops.
37
+ Never spawn, schedule, or poll on Ranni's behalf.
38
+
39
+ ## Keep the Frontier Current
40
+
41
+ Rewrite the current frontier, never append to it. Rewrite it when:
42
+
43
+ - the plan changes;
44
+ - you learn something the next agent needs;
45
+ - you are blocked;
46
+ - you are about to end a turn that changed something.
47
+
48
+ Say where the work stopped, what was learned, what changed, and the next step. Write it
49
+ for an agent reading it cold. Git keeps the history.
50
+
51
+ You may, without asking:
52
+
53
+ - rewrite the frontier;
54
+ - create sub-items that refine the parent's intent;
55
+ - set or clear `waiting`.
56
+
57
+ Ask the developer before you change or cut intent, drop scope, or close a work item.
58
+
59
+ ## Escalate Without Blocking
60
+
61
+ When a decision belongs to the developer:
62
+
63
+ 1. set the frontmatter key `waiting` to a one-line question;
64
+ 2. explain the options in the frontier and recommend one;
65
+ 3. keep working on unblocked parts, and stop mutating the blocked boundary.
66
+
67
+ If the developer is present, also ask in the conversation. Remove `waiting` once the
68
+ decision is made.
69
+
70
+ ## Route References Deliberately
71
+
72
+ Read a reference only when its trigger fires.
73
+
74
+ **Creating a work item or a sub-item** → [work-items.md](references/work-items.md)
75
+ **The work landed, or the developer asks to close it** → [closing.md](references/closing.md)
76
+
77
+ ## Boundaries
78
+
79
+ - Do not write a status field, queue, lock, or counter. State comes from Git and the Git
80
+ host at read time.
81
+ - Do not treat harness-specific session state as evidence.
82
+ - Do not dispatch follow-up work automatically or require a polling loop.
83
+ - Do not add a Ranni configuration file or reserve topology inside Relic.
@@ -0,0 +1,37 @@
1
+ # Closing
2
+
3
+ Read this reference only when a work item's work has landed, or when the developer asks
4
+ to close one.
5
+
6
+ ## Contents
7
+
8
+ - Confirm It Landed — evidence before proposing
9
+ - Harvest — what outlives the work item
10
+ - Remove It — closing without a closed status
11
+
12
+ ## Confirm It Landed
13
+
14
+ Check the evidence, not the frontier's claims:
15
+
16
+ - pull requests tied to the identity (title, branch, or a `Work:` line) are merged;
17
+ - branches carrying it are merged or gone;
18
+ - sub-items are closed, or are explicitly moving on without their parent;
19
+ - the intent is met.
20
+
21
+ If something is missing, update the frontier and stop.
22
+
23
+ ## Harvest
24
+
25
+ Before closing, list the durable knowledge that the work produced: decisions, business
26
+ rules, changed contracts, things a spec now gets wrong. Propose each one as a Relic
27
+ update and let the Relic skill handle it, including the developer's approval. Work
28
+ details and discarded paths are not knowledge; Git keeps them.
29
+
30
+ ## Remove It
31
+
32
+ Ask the developer to close, together with the harvest proposal. After approval:
33
+
34
+ 1. delete the work item file; there is no closed status, archive, or tombstone;
35
+ 2. find relative links that pointed at it and repair them, usually by rewording them as
36
+ plain text or linking to the knowledge it was harvested into;
37
+ 3. run `relic verify` and fix any broken links you introduced.
@@ -0,0 +1,60 @@
1
+ # Work Items
2
+
3
+ Read this reference only when you are creating a work item or a sub-item.
4
+
5
+ ## Contents
6
+
7
+ - Decide Whether It Deserves One — when a work item pays for itself
8
+ - Write It — destination, identity, and shape
9
+ - Refine Into Sub-items — splitting without asking
10
+
11
+ ## Decide Whether It Deserves One
12
+
13
+ Create a work item when the work will likely outlive one session, pass between agents,
14
+ or land in separate parts. Otherwise, do the work and leave no record.
15
+
16
+ ## Write It
17
+
18
+ Write it in the work kind's root, taken from `relic.yaml`. Allocate the identity the way
19
+ the Relic skill does, from the greatest current identity in that root, with no counter or
20
+ reservation. Name the file after the identity and a readable slug, for example
21
+ `WORK-042-push-notifications.md`.
22
+
23
+ ```markdown
24
+ ---
25
+ id: WORK-042
26
+ ---
27
+
28
+ # Push notifications
29
+
30
+ ## Intent
31
+
32
+ The outcome the developer wants, and why. Write it in their words; a rough intent is fine.
33
+
34
+ ## Current frontier
35
+
36
+ Not started.
37
+
38
+ ## Relationships
39
+
40
+ - [Notifications spec](../../specs/007-notifications/index.html)
41
+ - Depends on [WORK-041](./WORK-041-notification-api.md)
42
+ ```
43
+
44
+ - Only `id` is required. `waiting` is Ranni's one convention; any other key is the
45
+ project's.
46
+ - Express relationships as ordinary relative links in the body, never as frontmatter
47
+ values, so they become edges in Relic's graph.
48
+ - Ask only the questions that block a first step. Do not specify the work completely
49
+ upfront; the frontier refines it as it moves.
50
+
51
+ ## Refine Into Sub-items
52
+
53
+ When the work splits into parts that can land, or be worked, separately, create one
54
+ sub-item per part, without asking:
55
+
56
+ - each sub-item's intent narrows its parent's intent and never changes it;
57
+ - link the sub-item to its parent, and list it under the parent's relationships;
58
+ - the parent's frontier says how the parts fit together.
59
+
60
+ A split that drops or changes scope is a change of intent. Set `waiting` instead.