@goondocks/myco 1.0.8 → 1.0.10
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/dist/ui/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Myco</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-wDgaxPHh.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="/assets/index-BKQYN3jL.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@goondocks/myco",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.10",
|
|
4
4
|
"description": "Collective agent intelligence — Claude Code plugin",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"directory": "packages/myco"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@anthropic-ai/claude-agent-sdk": "^0.3.
|
|
62
|
+
"@anthropic-ai/claude-agent-sdk": "^0.3.162",
|
|
63
63
|
"@anthropic-ai/sdk": "^0.100.1",
|
|
64
64
|
"@inquirer/prompts": "^8.4.2",
|
|
65
65
|
"@modelcontextprotocol/sdk": "^1.28.0",
|
|
@@ -73,11 +73,11 @@
|
|
|
73
73
|
"zod": "^4.4.3"
|
|
74
74
|
},
|
|
75
75
|
"optionalDependencies": {
|
|
76
|
-
"@goondocks/myco-darwin-arm64": "1.0.
|
|
77
|
-
"@goondocks/myco-darwin-x64": "1.0.
|
|
78
|
-
"@goondocks/myco-linux-arm64": "1.0.
|
|
79
|
-
"@goondocks/myco-linux-x64": "1.0.
|
|
80
|
-
"@goondocks/myco-windows-x64": "1.0.
|
|
76
|
+
"@goondocks/myco-darwin-arm64": "1.0.10",
|
|
77
|
+
"@goondocks/myco-darwin-x64": "1.0.10",
|
|
78
|
+
"@goondocks/myco-linux-arm64": "1.0.10",
|
|
79
|
+
"@goondocks/myco-linux-x64": "1.0.10",
|
|
80
|
+
"@goondocks/myco-windows-x64": "1.0.10"
|
|
81
81
|
},
|
|
82
82
|
"devDependencies": {
|
|
83
83
|
"@goondocks/myco-shared": "*",
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: myco-handoff
|
|
3
|
+
description: >-
|
|
4
|
+
Use when handing a coding session off to a new session or another symbiont —
|
|
5
|
+
"hand this off", "prepare a handoff", "continue this in a new session", "pick
|
|
6
|
+
up where I left off", "pass this to another agent", or when context is heavy /
|
|
7
|
+
running low and the work will continue elsewhere, or work has drifted out of
|
|
8
|
+
scope and should restart fresh. PREPARE compresses the current session's
|
|
9
|
+
intention (why we're here, what we're doing, gotchas, dead ends, decisions)
|
|
10
|
+
into a ≤1500-token digest saved on a Myco plan. RECEIVE takes a plan ID,
|
|
11
|
+
rehydrates the context, loads the suggested skills, marks the referenced plans
|
|
12
|
+
in progress, and resumes the work.
|
|
13
|
+
allowed-tools: Read, Bash, Grep, Glob
|
|
14
|
+
user-invocable: true
|
|
15
|
+
argument-hint: prepare [plan-id] | receive <plan-id>
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Myco Handoff
|
|
19
|
+
|
|
20
|
+
Carry a session's working **intention** to another session cleanly. The
|
|
21
|
+
codebase shows *what* exists and the plan shows *what's next* — this skill
|
|
22
|
+
captures the *why* and *how we got here* that neither stores, compresses it to
|
|
23
|
+
≤1500 tokens, and rides it on a Myco plan (the cross-symbiont shared vehicle).
|
|
24
|
+
|
|
25
|
+
One skill, two modes.
|
|
26
|
+
|
|
27
|
+
## Routing
|
|
28
|
+
|
|
29
|
+
- `prepare [plan-id]` → build a handoff. The optional `plan-id` targets an
|
|
30
|
+
existing plan to attach the handoff to. → follow `references/preparing.md`.
|
|
31
|
+
- `receive <plan-id>` → consume a handoff. → follow `references/receiving.md`.
|
|
32
|
+
- **No argument** → infer from context: if you are mid-work with something to
|
|
33
|
+
hand off, PREPARE; if you were just given a plan ID to continue, RECEIVE.
|
|
34
|
+
- **Unsure** → ask the user. Do not guess.
|
|
35
|
+
|
|
36
|
+
## The handoff block
|
|
37
|
+
|
|
38
|
+
The handoff is a single delimited block inside a plan's content, so RECEIVE can
|
|
39
|
+
locate it and PREPARE can replace it idempotently (re-preparing replaces the
|
|
40
|
+
block — a plan never accumulates stale handoffs):
|
|
41
|
+
|
|
42
|
+
```markdown
|
|
43
|
+
<!-- myco-handoff:start -->
|
|
44
|
+
## Handoff — <YYYY-MM-DD>
|
|
45
|
+
- **Source session:** <session-id>
|
|
46
|
+
- **Referenced plans:** <plan-id>, <plan-id>
|
|
47
|
+
- **Suggested skills:** myco, <skill>, <skill>
|
|
48
|
+
|
|
49
|
+
### Digest
|
|
50
|
+
<≤1500-token intention-focused narrative>
|
|
51
|
+
<!-- myco-handoff:end -->
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Tooling
|
|
55
|
+
|
|
56
|
+
Drive Myco via the ambient MCP tools (`myco_plans`, `myco_sessions`,
|
|
57
|
+
`myco_cortex`, `myco_search`). On a host without MCP, fall back to
|
|
58
|
+
`myco tool call <tool> --json --input '{...}'` via Bash. Load suggested skills
|
|
59
|
+
with the `Skill` tool. Your current session ID is injected at session start
|
|
60
|
+
(look for the `Session::` line); if you cannot find it, ask the user.
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Preparing a Handoff
|
|
2
|
+
|
|
3
|
+
Goal: compress this session's intention into a ≤1500-token digest and persist it
|
|
4
|
+
on a Myco plan, with the source session ID, referenced plan IDs, and suggested
|
|
5
|
+
skills, then hand the user the exact line to resume in their next session.
|
|
6
|
+
|
|
7
|
+
## 1. Resolve the target plan
|
|
8
|
+
|
|
9
|
+
In priority order:
|
|
10
|
+
|
|
11
|
+
1. **Explicit `[plan-id]` argument** — use it as the target.
|
|
12
|
+
2. **An existing plan tied to this session** — `myco_plans({"op":"list","session":"<session-id>"})`.
|
|
13
|
+
If exactly one relevant plan comes back, target it. If several, ask the user
|
|
14
|
+
which (or whether to create a new one).
|
|
15
|
+
3. **Otherwise** — create a new dedicated handoff plan (Step 4b).
|
|
16
|
+
|
|
17
|
+
## 2. Author the ≤1500-token digest
|
|
18
|
+
|
|
19
|
+
Self-compress your **live working context** — this is a manual compaction. Focus
|
|
20
|
+
on **intention**, the part Myco doesn't already store:
|
|
21
|
+
|
|
22
|
+
- **How we got here / what we're doing & why** — the goal and the path to it.
|
|
23
|
+
- **Gotchas hit** — surprises about how something actually behaves.
|
|
24
|
+
- **Dead ends** — approaches ruled out, and why.
|
|
25
|
+
- **Decisions + rationale** — choices made and the reasoning.
|
|
26
|
+
|
|
27
|
+
**Defer to the plan.** State, next-steps, and open-questions usually already live
|
|
28
|
+
in the plan — do not duplicate them in the digest. Carry them in the digest
|
|
29
|
+
**only** when you are creating a *new dedicated handoff plan* (there is no work
|
|
30
|
+
plan to hold them).
|
|
31
|
+
|
|
32
|
+
**Stay within ≤1500 tokens** (~1100 words). Prefer dense prose over exhaustive
|
|
33
|
+
detail; the receiver can pull more via `myco_search` / `myco_cortex`.
|
|
34
|
+
|
|
35
|
+
**Secret nudge:** don't inline secrets, keys, or PII — reference them by location
|
|
36
|
+
(e.g. "API key in `.myco/secrets.env`").
|
|
37
|
+
|
|
38
|
+
## 3. Choose suggested skills
|
|
39
|
+
|
|
40
|
+
Decide which skills the receiver will need to resume well. Always include `myco`.
|
|
41
|
+
Add domain skills relevant to the work (e.g. a debugging or subsystem skill).
|
|
42
|
+
List them by name.
|
|
43
|
+
|
|
44
|
+
## 4. Persist the handoff block
|
|
45
|
+
|
|
46
|
+
Assemble the block:
|
|
47
|
+
|
|
48
|
+
```markdown
|
|
49
|
+
<!-- myco-handoff:start -->
|
|
50
|
+
## Handoff — <today's date YYYY-MM-DD>
|
|
51
|
+
- **Source session:** <this session id>
|
|
52
|
+
- **Referenced plans:** <plan-id>, <plan-id>
|
|
53
|
+
- **Suggested skills:** myco, <skill>, <skill>
|
|
54
|
+
|
|
55
|
+
### Digest
|
|
56
|
+
<the digest from step 2>
|
|
57
|
+
<!-- myco-handoff:end -->
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 4a. Append/replace onto an existing plan (idempotent)
|
|
61
|
+
|
|
62
|
+
1. Read current content: `myco_plans({"op":"get","id":"<plan-id>"})`.
|
|
63
|
+
2. If a `<!-- myco-handoff:start -->…<!-- myco-handoff:end -->` block already
|
|
64
|
+
exists, **replace** it with the new block. Otherwise append the new block to
|
|
65
|
+
the end. Leave all other plan content untouched.
|
|
66
|
+
3. Save: `myco_plans({"op":"save","id":"<plan-id>","content":"<full updated content>"})`.
|
|
67
|
+
(Updating by `id` preserves the plan's existing status.)
|
|
68
|
+
|
|
69
|
+
### 4b. Create a new dedicated handoff plan
|
|
70
|
+
|
|
71
|
+
A new, non-file-backed plan **requires `plan_key`** (its stable identity; pass
|
|
72
|
+
`plan_key` OR `source_path`, never both). Use a `plan_key` like
|
|
73
|
+
`handoff-<short-slug>` — re-running `prepare` with the same `session_id` +
|
|
74
|
+
`plan_key` then updates the same plan (idempotent) instead of creating a second.
|
|
75
|
+
|
|
76
|
+
```json
|
|
77
|
+
myco_plans({
|
|
78
|
+
"op":"save",
|
|
79
|
+
"session_id":"<this session id>",
|
|
80
|
+
"plan_key":"handoff-<short-slug>",
|
|
81
|
+
"title":"Handoff: <short topic>",
|
|
82
|
+
"status":"active",
|
|
83
|
+
"tags":["handoff"],
|
|
84
|
+
"content":"<the handoff block>"
|
|
85
|
+
})
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
The `save` response returns the new plan `id` — capture it for Step 5.
|
|
89
|
+
|
|
90
|
+
## 5. Return the resume instruction to the user
|
|
91
|
+
|
|
92
|
+
Tell the user the plan ID and the **exact line** to run next session, plus a
|
|
93
|
+
one-line summary of what was captured. For example:
|
|
94
|
+
|
|
95
|
+
> Handoff saved to plan `<plan-id>`. In your next session, run:
|
|
96
|
+
> `/myco-handoff receive <plan-id>`
|
|
97
|
+
> It carries: <one-line summary of the digest + referenced plans + suggested skills>.
|
|
98
|
+
|
|
99
|
+
## CLI fallback (no MCP)
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
myco tool call myco_plans --json --input '{"op":"list","session":"<session-id>"}'
|
|
103
|
+
myco tool call myco_plans --json --input '{"op":"save","id":"<plan-id>","content":"..."}'
|
|
104
|
+
```
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Receiving a Handoff
|
|
2
|
+
|
|
3
|
+
Goal: given a plan ID, rehydrate a fresh session from a prepared handoff and
|
|
4
|
+
resume the work.
|
|
5
|
+
|
|
6
|
+
## 1. Read and parse the handoff
|
|
7
|
+
|
|
8
|
+
`myco_plans({"op":"get","id":"<plan-id>"})` → in the returned `content`, find the
|
|
9
|
+
block between `<!-- myco-handoff:start -->` and `<!-- myco-handoff:end -->`.
|
|
10
|
+
Parse out:
|
|
11
|
+
|
|
12
|
+
- **Source session** (id)
|
|
13
|
+
- **Referenced plans** (ids)
|
|
14
|
+
- **Suggested skills** (names)
|
|
15
|
+
- **Digest** (the narrative)
|
|
16
|
+
|
|
17
|
+
If no handoff block is present, tell the user the plan has no handoff and stop.
|
|
18
|
+
|
|
19
|
+
## 2. Load the suggested skills
|
|
20
|
+
|
|
21
|
+
For each suggested skill, invoke it with the `Skill` tool. If a skill is not
|
|
22
|
+
available in this symbiont, note it and continue — do not fail the handoff over
|
|
23
|
+
a missing optional skill.
|
|
24
|
+
|
|
25
|
+
## 3. Mark referenced plans in progress
|
|
26
|
+
|
|
27
|
+
For each referenced work plan:
|
|
28
|
+
`myco_plans({"op":"save","id":"<plan-id>","status":"in_progress"})`.
|
|
29
|
+
|
|
30
|
+
If this *is* a dedicated handoff plan (the plan you received is itself the work
|
|
31
|
+
plan, tagged `handoff`), mark **it** `in_progress`.
|
|
32
|
+
|
|
33
|
+
## 4. Optional — pull broader context
|
|
34
|
+
|
|
35
|
+
Only when you need richer/broader context than the digest gives:
|
|
36
|
+
|
|
37
|
+
- `myco_cortex({"op":"digest","tier":5000})` — high-fidelity project memory.
|
|
38
|
+
- `myco_search({"query":"<topic from the digest>"})` — related spores/plans;
|
|
39
|
+
follow each result's `retrieve` hint to read the owning entity.
|
|
40
|
+
|
|
41
|
+
Skip this for a narrow, well-scoped resume.
|
|
42
|
+
|
|
43
|
+
## 5. Summarize the landing and resume
|
|
44
|
+
|
|
45
|
+
Tell the user, in a few lines: where the prior session left off (from the
|
|
46
|
+
digest), which skills you loaded, which plan(s) you marked `in_progress`, and the
|
|
47
|
+
concrete next step you're about to take. Then continue the work.
|
|
48
|
+
|
|
49
|
+
## CLI fallback (no MCP)
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
myco tool call myco_plans --json --input '{"op":"get","id":"<plan-id>"}'
|
|
53
|
+
myco tool call myco_plans --json --input '{"op":"save","id":"<plan-id>","status":"in_progress"}'
|
|
54
|
+
```
|