@awebai/claude-skills 0.1.0 → 0.2.1
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/.claude-plugin/plugin.json +1 -1
- package/README.md +3 -2
- package/package.json +6 -5
- package/skills/aweb-bootstrap/SKILL.md +172 -0
- package/skills/aweb-bootstrap/references/bootstrap-scenarios.md +112 -0
- package/skills/aweb-team-membership/SKILL.md +4 -4
- package/skills/aweb-team-membership/references/team-membership-reference.md +3 -3
package/README.md
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# `@awebai/claude-skills`
|
|
2
2
|
|
|
3
|
-
Content-only Claude Code plugin packaging the
|
|
4
|
-
`aweb-coordination`, `aweb-messaging`, `aweb-team-membership
|
|
3
|
+
Content-only Claude Code plugin packaging the four canonical aweb skills:
|
|
4
|
+
`aweb-coordination`, `aweb-messaging`, `aweb-team-membership`, and
|
|
5
|
+
`aweb-bootstrap`.
|
|
5
6
|
|
|
6
7
|
Distinct from [`@awebai/claude-channel`](https://github.com/awebai/aweb/tree/main/channel),
|
|
7
8
|
which ships the real-time channel runtime and requires
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@awebai/claude-skills",
|
|
3
|
-
"version": "0.1
|
|
4
|
-
"description": "Content-only Claude Code plugin shipping the canonical aweb agent-coordination skills: aweb-coordination, aweb-messaging, aweb-team-membership.",
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"description": "Content-only Claude Code plugin shipping the canonical aweb agent-coordination skills: aweb-coordination, aweb-messaging, aweb-team-membership, aweb-bootstrap.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://aweb.ai",
|
|
7
7
|
"repository": {
|
|
@@ -23,8 +23,9 @@
|
|
|
23
23
|
"package.json"
|
|
24
24
|
],
|
|
25
25
|
"scripts": {
|
|
26
|
-
"sync-skills": "rm -rf skills && mkdir -p skills && cp -R ../../skills/aweb-coordination ../../skills/aweb-messaging ../../skills/aweb-team-membership skills/",
|
|
27
|
-
"
|
|
28
|
-
"
|
|
26
|
+
"sync-skills": "rm -rf skills && mkdir -p skills && cp -R ../../skills/aweb-coordination ../../skills/aweb-messaging ../../skills/aweb-team-membership ../../skills/aweb-bootstrap skills/",
|
|
27
|
+
"sync-plugin-version": "node -e \"const p=JSON.parse(require('fs').readFileSync('.claude-plugin/plugin.json','utf8')); p.version=require('./package.json').version; require('fs').writeFileSync('.claude-plugin/plugin.json',JSON.stringify(p,null,2)+'\\n')\"",
|
|
28
|
+
"prepack": "npm run sync-skills && npm run sync-plugin-version",
|
|
29
|
+
"prepublishOnly": "npm run sync-skills && npm run sync-plugin-version"
|
|
29
30
|
}
|
|
30
31
|
}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aweb-bootstrap
|
|
3
|
+
description: This skill should be used when helping a human create a new aweb team from a template (aw team bootstrap), choosing a template and bootstrap mode (hosted vs BYOT vs manual), selecting work-directory vs work-repo-url, provisioning optional worktree agents, and validating/re-running bootstrap safely.
|
|
4
|
+
allowed-tools: "Bash(aw *)"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# aweb Bootstrap
|
|
8
|
+
|
|
9
|
+
Use this skill when a human wants to create a new aweb team for the first time, and you need to guide them through `aw team bootstrap` decisions and validation.
|
|
10
|
+
|
|
11
|
+
This skill is about **decision policy + safe execution**, not memorizing flags.
|
|
12
|
+
|
|
13
|
+
Related skills:
|
|
14
|
+
|
|
15
|
+
- For day-to-day coordination once the team exists: `aweb-coordination`
|
|
16
|
+
- For mail/chat response policy: `aweb-messaging`
|
|
17
|
+
- For joining an existing team, multi-team membership, custody, addressability, and contacts: `aweb-team-membership`
|
|
18
|
+
|
|
19
|
+
Long-form reference: docs/team-bootstrap.md in the aweb repo.
|
|
20
|
+
|
|
21
|
+
## Bootstrap vs join (first decision)
|
|
22
|
+
|
|
23
|
+
Bootstrap when:
|
|
24
|
+
|
|
25
|
+
- You are creating a brand-new team (new template repo clone, new identities, new role bundle).
|
|
26
|
+
- You want reproducible setup for multiple agents/workspaces.
|
|
27
|
+
- You want a “one command creates the team + installs roles + provisions agent dirs” flow.
|
|
28
|
+
|
|
29
|
+
Do NOT bootstrap when:
|
|
30
|
+
|
|
31
|
+
- The team already exists and you just need to add yourself: use `aweb-team-membership` and the `aw id team ...` commands.
|
|
32
|
+
- You only need another workspace for yourself: use `aw workspace add-worktree` (git worktree) or create another directory and `aw init` it.
|
|
33
|
+
|
|
34
|
+
## Pick a template (what team shape are we creating?)
|
|
35
|
+
|
|
36
|
+
Canonical templates:
|
|
37
|
+
|
|
38
|
+
- awebai/aweb-team-dev-review (2 agents)
|
|
39
|
+
Use when you want the smallest meaningful team: implementation + review.
|
|
40
|
+
|
|
41
|
+
- awebai/aweb-team-company-surfaces (6 agents)
|
|
42
|
+
Use when you want a cross-functional team: direction/engineering/operations/support/outreach/analytics.
|
|
43
|
+
|
|
44
|
+
Fork vs use-as-is:
|
|
45
|
+
|
|
46
|
+
- Use as-is to learn the flow or to run a standard team.
|
|
47
|
+
- Fork when you want to customize roles, responsibilities, or instructions.
|
|
48
|
+
|
|
49
|
+
## Before running bootstrap (safety checks)
|
|
50
|
+
|
|
51
|
+
1) Run bootstrap from a directory that is NOT already inside a git repo/worktree.
|
|
52
|
+
|
|
53
|
+
- If you are inside a git repo/worktree and you are using a remote template ref, bootstrap will refuse to clone by default.
|
|
54
|
+
- Use `--template-cache-dir` as the explicit escape hatch when you must run from inside a repo.
|
|
55
|
+
|
|
56
|
+
2) Decide the “work” directory model (see next section). This affects whether agents share one checkout or get isolated worktrees.
|
|
57
|
+
|
|
58
|
+
## Exactly one of: work-directory OR work-repo-url (XOR)
|
|
59
|
+
|
|
60
|
+
Bootstrap needs a directory to symlink into each agent workspace as ./work.
|
|
61
|
+
|
|
62
|
+
You must provide exactly one of:
|
|
63
|
+
|
|
64
|
+
A) --work-directory PATH
|
|
65
|
+
|
|
66
|
+
- Use when you already have a local directory you want agents to use as work.
|
|
67
|
+
- For code teams with worktree agents (team.yaml worktrees:), PATH must be a git repo.
|
|
68
|
+
|
|
69
|
+
B) --work-repo-url VALUE
|
|
70
|
+
|
|
71
|
+
- Use when you want bootstrap to clone a repo for you.
|
|
72
|
+
- VALUE can be a URL or a local path; bootstrap runs “git clone VALUE” into:
|
|
73
|
+
|
|
74
|
+
<template-checkout>/worktrees/<derived-name>/
|
|
75
|
+
|
|
76
|
+
where <derived-name> matches git’s default directory naming (basename, .git stripped).
|
|
77
|
+
|
|
78
|
+
- That clone destination is then used as the effective work directory (symlinked as ./work in each agent workspace).
|
|
79
|
+
|
|
80
|
+
If both flags are set, treat it as a user error and stop.
|
|
81
|
+
|
|
82
|
+
## Hosted vs BYOT vs manual bootstrap modes
|
|
83
|
+
|
|
84
|
+
Bootstrap can be used in three broad modes:
|
|
85
|
+
|
|
86
|
+
1) Hosted (aweb.ai)
|
|
87
|
+
|
|
88
|
+
- Best for first-time teams.
|
|
89
|
+
- Bootstrap will prompt for hosted onboarding details when appropriate, then provision each agent workspace.
|
|
90
|
+
|
|
91
|
+
2) BYOT (your own controller + namespace)
|
|
92
|
+
|
|
93
|
+
- Use when the team’s namespace and controller key live in your environment.
|
|
94
|
+
- Bootstrap can create/ensure the team in that namespace and provision all agents.
|
|
95
|
+
|
|
96
|
+
3) Manual (print next commands)
|
|
97
|
+
|
|
98
|
+
- Use when you cannot or should not auto-provision from this run (for example, non-interactive environments or policy constraints).
|
|
99
|
+
- Bootstrap will print the next `aw init ...` commands to run inside each agent directory.
|
|
100
|
+
|
|
101
|
+
Policy guidance:
|
|
102
|
+
|
|
103
|
+
- Prefer hosted for “get a working team now”.
|
|
104
|
+
- Prefer BYOT when you need local control over identity and routing.
|
|
105
|
+
- Prefer manual when you need human confirmation at each step.
|
|
106
|
+
|
|
107
|
+
## Worktree agents (team.yaml worktrees:)
|
|
108
|
+
|
|
109
|
+
Worktree agents are an OPTIONAL second layer for codebases where multiple agents will edit in parallel.
|
|
110
|
+
|
|
111
|
+
- Responsibility workspaces live under agents/<responsibility>/.
|
|
112
|
+
- Worktree agents live under worktrees/ and each has its own git worktree checkout and its own .aw/ identity state.
|
|
113
|
+
|
|
114
|
+
Turn worktree agents on when:
|
|
115
|
+
|
|
116
|
+
- The work directory is a git repo.
|
|
117
|
+
- Multiple agents will change files in parallel.
|
|
118
|
+
- You want each agent’s edits isolated until you merge.
|
|
119
|
+
|
|
120
|
+
Leave it off when:
|
|
121
|
+
|
|
122
|
+
- Work is non-code.
|
|
123
|
+
- Only one agent edits at a time.
|
|
124
|
+
|
|
125
|
+
Operational note:
|
|
126
|
+
|
|
127
|
+
- Worktree agents are local-only identities by design; they are for parallel local work, not for global addressability.
|
|
128
|
+
|
|
129
|
+
## After bootstrap: validate that the team is actually usable
|
|
130
|
+
|
|
131
|
+
For each agent directory under agents/<responsibility>/:
|
|
132
|
+
|
|
133
|
+
- Run `aw workspace status` to confirm:
|
|
134
|
+
- the workspace is initialized
|
|
135
|
+
- the active team is correct
|
|
136
|
+
- the identity is present
|
|
137
|
+
|
|
138
|
+
- Run `aw whoami` to confirm the identity fields are present.
|
|
139
|
+
|
|
140
|
+
- If you use a wake-up path (Pi extension / Claude Code channel plugin), start it inside the agent directory after initialization.
|
|
141
|
+
|
|
142
|
+
## Re-run safety and idempotence (how to avoid making a mess)
|
|
143
|
+
|
|
144
|
+
When iterating on templates or recovering from partial setup:
|
|
145
|
+
|
|
146
|
+
- Use `--dry-run` first to validate the plan.
|
|
147
|
+
- Use `--refresh-template` only when you intend to re-clone over a previous template checkout.
|
|
148
|
+
- Treat identity/certificate state under .aw/ as the source of truth; do not delete it casually.
|
|
149
|
+
- If you need to create a fresh workspace, do it in a new directory rather than mutating an existing identity in place.
|
|
150
|
+
|
|
151
|
+
If bootstrap fails mid-way:
|
|
152
|
+
|
|
153
|
+
- Capture the first failing command and error.
|
|
154
|
+
- Do not keep retrying blindly; first confirm whether some workspaces were already created and connected.
|
|
155
|
+
- Prefer completing the remaining agent dirs rather than redoing everything.
|
|
156
|
+
|
|
157
|
+
## Adding agents later
|
|
158
|
+
|
|
159
|
+
Two common expansions after initial bootstrap:
|
|
160
|
+
|
|
161
|
+
- Add another responsibility workspace: create a new directory and run `aw init` (or extend your template and bootstrap a new repo).
|
|
162
|
+
- Add another isolated code workspace on the same repo: use `aw workspace add-worktree`.
|
|
163
|
+
|
|
164
|
+
When in doubt, choose the smallest change that preserves existing identities and avoids rewriting certificates.
|
|
165
|
+
|
|
166
|
+
## References
|
|
167
|
+
|
|
168
|
+
Read these only when deeper context is needed:
|
|
169
|
+
|
|
170
|
+
- references/bootstrap-scenarios.md: scenarios, checklists, and troubleshooting.
|
|
171
|
+
- https://aweb.ai/docs/team-bootstrap/ : full reference guide.
|
|
172
|
+
- docs/team-bootstrap.md (aweb repo checkout): full reference guide.
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# aweb Bootstrap scenarios and checklists
|
|
2
|
+
|
|
3
|
+
This reference is support material for the aweb-bootstrap skill. Use it when you need concrete examples, troubleshooting checklists, or a quick “what should I run next?” guide.
|
|
4
|
+
|
|
5
|
+
It is intentionally narrower than docs/team-bootstrap.md: it focuses on common decision points and failure modes.
|
|
6
|
+
|
|
7
|
+
## Scenario: first-time hosted team from a template (recommended)
|
|
8
|
+
|
|
9
|
+
Goal: create a new aweb.ai team and provision agent workspaces from a template.
|
|
10
|
+
|
|
11
|
+
Checklist:
|
|
12
|
+
|
|
13
|
+
- Run from a directory that is not inside an existing git repo/worktree.
|
|
14
|
+
- Pick a template:
|
|
15
|
+
- awebai/aweb-team-dev-review for a minimal 2-agent setup.
|
|
16
|
+
- awebai/aweb-team-company-surfaces for a 6-agent cross-functional setup.
|
|
17
|
+
|
|
18
|
+
Example (using an existing local work directory):
|
|
19
|
+
|
|
20
|
+
aw team bootstrap https://github.com/awebai/aweb-team-dev-review.git --yes --work-directory /path/to/work
|
|
21
|
+
|
|
22
|
+
Example (clone the work repo into the template checkout):
|
|
23
|
+
|
|
24
|
+
aw team bootstrap https://github.com/awebai/aweb-team-dev-review.git --yes --work-repo-url https://github.com/ORG/REPO.git
|
|
25
|
+
|
|
26
|
+
Notes:
|
|
27
|
+
|
|
28
|
+
- work-directory and work-repo-url are XOR: set exactly one.
|
|
29
|
+
- When work-repo-url is used, bootstrap clones into:
|
|
30
|
+
|
|
31
|
+
<template-checkout>/worktrees/<derived-name>/
|
|
32
|
+
|
|
33
|
+
where derived-name is the git-style repo directory name (basename with .git stripped).
|
|
34
|
+
|
|
35
|
+
## Scenario: BYOT (your own controller + namespace)
|
|
36
|
+
|
|
37
|
+
Goal: bootstrap a team under a namespace you control.
|
|
38
|
+
|
|
39
|
+
Checklist:
|
|
40
|
+
|
|
41
|
+
- Confirm you have a controller identity key for the namespace.
|
|
42
|
+
- Decide whether bootstrap should auto-provision (interactive) or just print next commands.
|
|
43
|
+
|
|
44
|
+
Example shape (values are placeholders):
|
|
45
|
+
|
|
46
|
+
aw team bootstrap https://github.com/awebai/aweb-team-dev-review.git \
|
|
47
|
+
--yes \
|
|
48
|
+
--namespace example.com \
|
|
49
|
+
--team dev \
|
|
50
|
+
--work-directory /path/to/work
|
|
51
|
+
|
|
52
|
+
If you are also self-hosting the coordination stack, add:
|
|
53
|
+
|
|
54
|
+
--aweb-url http://localhost:8000
|
|
55
|
+
--registry http://localhost:8010
|
|
56
|
+
|
|
57
|
+
## Scenario: manual mode (print next commands)
|
|
58
|
+
|
|
59
|
+
Goal: validate the plan and generate the next steps without changing server state.
|
|
60
|
+
|
|
61
|
+
Checklist:
|
|
62
|
+
|
|
63
|
+
- Use dry-run to see the plan.
|
|
64
|
+
- Use the printed aw init commands inside each agent directory.
|
|
65
|
+
|
|
66
|
+
Example:
|
|
67
|
+
|
|
68
|
+
aw team bootstrap /path/to/template --dry-run --work-directory /path/to/work
|
|
69
|
+
|
|
70
|
+
## Worktree agents: when to enable and what to expect
|
|
71
|
+
|
|
72
|
+
Use worktree agents when multiple agents will edit code in parallel.
|
|
73
|
+
|
|
74
|
+
Requirements:
|
|
75
|
+
|
|
76
|
+
- The work directory must be a git repo.
|
|
77
|
+
- The template must declare a worktrees: block in team.yaml.
|
|
78
|
+
|
|
79
|
+
What bootstrap does:
|
|
80
|
+
|
|
81
|
+
- It creates template worktrees/ (if missing) and git-excludes it locally.
|
|
82
|
+
- It creates one git worktree per entry.
|
|
83
|
+
- Each worktree agent gets its own .aw/ state and local-scope identity.
|
|
84
|
+
|
|
85
|
+
Common pitfall:
|
|
86
|
+
|
|
87
|
+
- Alias collisions: worktree agent aliases must not collide with existing team aliases.
|
|
88
|
+
|
|
89
|
+
## Quick validation after bootstrap
|
|
90
|
+
|
|
91
|
+
In each generated agent directory (agents/<responsibility>/):
|
|
92
|
+
|
|
93
|
+
- aw workspace status
|
|
94
|
+
- aw whoami
|
|
95
|
+
|
|
96
|
+
If you are using a wake-up integration:
|
|
97
|
+
|
|
98
|
+
- start the Pi extension or the Claude Code channel plugin in that directory after initialization
|
|
99
|
+
|
|
100
|
+
## Troubleshooting patterns
|
|
101
|
+
|
|
102
|
+
If bootstrap fails:
|
|
103
|
+
|
|
104
|
+
- Stop and capture the first error.
|
|
105
|
+
- Identify which directories were already created.
|
|
106
|
+
- Prefer completing the remaining steps rather than deleting existing .aw state.
|
|
107
|
+
|
|
108
|
+
If you see identity_mismatch or unverified messages in live channel metadata:
|
|
109
|
+
|
|
110
|
+
- Compare with aw chat history output.
|
|
111
|
+
- Confirm the channel plugin / Pi package version is current.
|
|
112
|
+
- Prefer collecting a raw fetch payload before changing trust logic.
|
|
@@ -39,7 +39,7 @@ Interpret failures by layer:
|
|
|
39
39
|
- Missing signing key: local identity is incomplete.
|
|
40
40
|
- Missing team certificate: identity may exist but cannot act in the team.
|
|
41
41
|
- Active team mismatch: the identity has multiple memberships but this workspace is using the wrong one.
|
|
42
|
-
- Address route, inbound-mode, or contact failure: the sender and recipient may both exist, but route validation or `inbound_mode=open|
|
|
42
|
+
- Address route, inbound-mode, or contact failure: the sender and recipient may both exist, but route validation or `inbound_mode=open|team_and_contacts` policy prevents discovery or inbound delivery.
|
|
43
43
|
|
|
44
44
|
## Joining a team
|
|
45
45
|
|
|
@@ -143,7 +143,7 @@ For custodial identities, rotation and recovery are cloud-account operations. Do
|
|
|
143
143
|
|
|
144
144
|
First contact to a global identity uses a concrete address route such as `<domain>/<alias>`. A bare `did:aw` is identity binding, not a first-contact delivery route. Legacy reachability fields may still appear in support/audit views, but they are compatibility/audit state, not live delivery authority.
|
|
145
145
|
|
|
146
|
-
Delivery authorization is `inbound_mode=open|
|
|
146
|
+
Delivery authorization is `inbound_mode=open|team_and_contacts`: `open` accepts valid routed senders, while `team_and_contacts` accepts verified same-team senders plus exact active identity contacts after the route is valid. Team membership is always delivery authority in `team_and_contacts`; contacts only add trusted non-team senders. Contacts do not synthesize routes or resolver visibility.
|
|
147
147
|
|
|
148
148
|
Contacts are saved identity/address relationships for repeated cross-team messaging. They are per-identity, not per-team. Add a contact when repeated communication is expected; otherwise use a one-shot namespace address.
|
|
149
149
|
|
|
@@ -168,8 +168,8 @@ Treat teams as separate coordination boundaries for tasks, locks, roles, instruc
|
|
|
168
168
|
Check:
|
|
169
169
|
|
|
170
170
|
1. Global address registration and route resolution.
|
|
171
|
-
2. Inbound mode (`open` or `
|
|
172
|
-
3.
|
|
171
|
+
2. Inbound mode (`open` or `team_and_contacts`).
|
|
172
|
+
3. Verified shared team membership, or exact active contact state for non-team senders, when the recipient uses `team_and_contacts`.
|
|
173
173
|
4. Whether X is using a same-team alias or a concrete cross-team address.
|
|
174
174
|
5. Whether the active team is the intended team for sender context.
|
|
175
175
|
6. Whether the workspace has a valid certificate.
|
|
@@ -40,9 +40,9 @@ Addressability and delivery authorization are separate:
|
|
|
40
40
|
|
|
41
41
|
- First contact uses a concrete address route (`domain/alias`).
|
|
42
42
|
- `did:aw` is identity binding, not a first-contact delivery route.
|
|
43
|
-
- `inbound_mode=open|
|
|
44
|
-
-
|
|
45
|
-
- Legacy reachability
|
|
43
|
+
- `inbound_mode=open|team_and_contacts` controls delivery after route validation.
|
|
44
|
+
- `team_and_contacts` accepts verified same-team senders plus exact active identity contacts for trusted non-team senders. Contacts do not create routes or resolver visibility.
|
|
45
|
+
- Legacy reachability fields may still appear in support or migration output, but they are compatibility/audit state, not live delivery authority.
|
|
46
46
|
- `aw contacts ...` manages saved contact relationships.
|
|
47
47
|
- `aw directory <domain>/<alias>` performs directory lookup.
|
|
48
48
|
|