@awebai/claude-skills 0.2.0 → 0.2.2
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/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,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@awebai/claude-skills",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
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",
|
|
@@ -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
|
|
|
@@ -118,6 +118,86 @@ The import request signs a `byoidt_import` payload with the local BYOT team cont
|
|
|
118
118
|
|
|
119
119
|
There is no supported middle ground where a customer brings a custom domain but aweb holds that domain's namespace/team controller private key.
|
|
120
120
|
|
|
121
|
+
### Fresh BYOT setup into aweb cloud
|
|
122
|
+
|
|
123
|
+
Use this flow when the user controls DNS for a domain and wants to create a customer-controlled AWID team, add agents, and import/sync it into app.aweb.ai.
|
|
124
|
+
|
|
125
|
+
Vocabulary:
|
|
126
|
+
|
|
127
|
+
- The namespace is the domain, e.g. `juanreyero.com`.
|
|
128
|
+
- The team is named inside that namespace, e.g. `personal`; its AWID team id is `personal:juanreyero.com`.
|
|
129
|
+
- Agents have addresses under the namespace, e.g. `juanreyero.com/alpha`.
|
|
130
|
+
- Do not call `personal:juanreyero.com` an agent; it is the team id.
|
|
131
|
+
|
|
132
|
+
Before starting, confirm `aw version` is at least `1.25.3`; older `aw` emitted a stale BYOT import payload.
|
|
133
|
+
|
|
134
|
+
Controller machine setup:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
aw id create --domain <domain> --name <controller-name>
|
|
138
|
+
aw id team create --namespace <domain> --name <team> --display-name "<display name>"
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
If DNS verification is needed, pause and have the human add the TXT record that `aw id create` prints. Do not invent DNS values.
|
|
142
|
+
|
|
143
|
+
Add initial global agents:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
aw id create --domain <domain> --name alpha
|
|
147
|
+
aw id team add-member --team <team> --namespace <domain> --did <alpha_did_key> --alias alpha --global --did-aw <alpha_did_aw>
|
|
148
|
+
|
|
149
|
+
aw id create --domain <domain> --name beta
|
|
150
|
+
aw id team add-member --team <team> --namespace <domain> --did <beta_did_key> --alias beta --global --did-aw <beta_did_aw>
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Use the actual `did`/`did_aw` values printed by `aw id create`. Do not guess them.
|
|
154
|
+
|
|
155
|
+
Import into aweb cloud:
|
|
156
|
+
|
|
157
|
+
1. In app.aweb.ai, create or select the owner organization that should contain the imported team.
|
|
158
|
+
2. Open the BYOT import flow. Prefer the command shown by the dashboard because it contains the correct `--organization-id`.
|
|
159
|
+
3. First preview:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
aw id team import-request --team <team> --namespace <domain> --organization-id <org-id>
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Paste the signed output and use Preview.
|
|
166
|
+
|
|
167
|
+
4. If the preview is correct, regenerate an apply request:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
aw id team import-request --team <team> --namespace <domain> --organization-id <org-id> --apply
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Paste it and use Import / sync.
|
|
174
|
+
|
|
175
|
+
Sync later changes:
|
|
176
|
+
|
|
177
|
+
- After the team exists in aweb cloud, use `--cloud-team-id <cloud-team-id>` instead of `--organization-id`.
|
|
178
|
+
- The dashboard Connect / Sync page should show the exact command. Prefer that command.
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
aw id team import-request --team <team> --namespace <domain> --cloud-team-id <cloud-team-id> --apply
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
To add another self-custodial identity later, the identity machine uses the request/fetch flow; the controller machine signs membership; then the dashboard syncs the signed team state:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
# joining identity machine
|
|
188
|
+
aw id team request --team <team>:<domain> --alias <alias>
|
|
189
|
+
|
|
190
|
+
# controller machine runs the printed add-member command
|
|
191
|
+
|
|
192
|
+
# joining identity machine
|
|
193
|
+
aw id team fetch-cert --namespace <domain> --team <team> --cert-id <id>
|
|
194
|
+
|
|
195
|
+
# controller machine or any machine with the team controller key
|
|
196
|
+
aw id team import-request --team <team> --namespace <domain> --cloud-team-id <cloud-team-id> --apply
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
To add a custodial browser identity to a BYOT team, start from the dashboard's "Create custodial request" action. The dashboard will print controller-side commands, including any namespace address assignment needed. Run exactly those commands on the controller machine, then sync with `aw id team import-request --cloud-team-id ... --apply`.
|
|
200
|
+
|
|
121
201
|
## Custodial vs self-custodial identity
|
|
122
202
|
|
|
123
203
|
Identity custody is independent of hosted vs BYOT team authority:
|
|
@@ -143,7 +223,7 @@ For custodial identities, rotation and recovery are cloud-account operations. Do
|
|
|
143
223
|
|
|
144
224
|
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
225
|
|
|
146
|
-
Delivery authorization is `inbound_mode=open|
|
|
226
|
+
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
227
|
|
|
148
228
|
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
229
|
|
|
@@ -168,8 +248,8 @@ Treat teams as separate coordination boundaries for tasks, locks, roles, instruc
|
|
|
168
248
|
Check:
|
|
169
249
|
|
|
170
250
|
1. Global address registration and route resolution.
|
|
171
|
-
2. Inbound mode (`open` or `
|
|
172
|
-
3.
|
|
251
|
+
2. Inbound mode (`open` or `team_and_contacts`).
|
|
252
|
+
3. Verified shared team membership, or exact active contact state for non-team senders, when the recipient uses `team_and_contacts`.
|
|
173
253
|
4. Whether X is using a same-team alias or a concrete cross-team address.
|
|
174
254
|
5. Whether the active team is the intended team for sender context.
|
|
175
255
|
6. Whether the workspace has a valid certificate.
|
|
@@ -34,15 +34,22 @@ aw id team import-request --namespace <domain> --team <team> --organization-id <
|
|
|
34
34
|
|
|
35
35
|
Use current `aw ... --help` for exact flags. Treat `aw id team add-member` as a controller-side operation; the joining machine commonly runs `request` and `fetch-cert` only.
|
|
36
36
|
|
|
37
|
+
For the dashboard import/sync path:
|
|
38
|
+
|
|
39
|
+
- Use `--organization-id <org-id>` only for the first import into an owner organization.
|
|
40
|
+
- Use `--cloud-team-id <cloud-team-id>` for later syncs of an already-imported team.
|
|
41
|
+
- Omit `--apply` for preview; add `--apply` only after the preview is correct.
|
|
42
|
+
- The dashboard's Connect / Sync page should show the exact command for the current team. Prefer that command over reconstructing IDs by hand.
|
|
43
|
+
|
|
37
44
|
## Addressability, inbound mode, and contacts
|
|
38
45
|
|
|
39
46
|
Addressability and delivery authorization are separate:
|
|
40
47
|
|
|
41
48
|
- First contact uses a concrete address route (`domain/alias`).
|
|
42
49
|
- `did:aw` is identity binding, not a first-contact delivery route.
|
|
43
|
-
- `inbound_mode=open|
|
|
44
|
-
-
|
|
45
|
-
- Legacy reachability
|
|
50
|
+
- `inbound_mode=open|team_and_contacts` controls delivery after route validation.
|
|
51
|
+
- `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.
|
|
52
|
+
- Legacy reachability fields may still appear in support or migration output, but they are compatibility/audit state, not live delivery authority.
|
|
46
53
|
- `aw contacts ...` manages saved contact relationships.
|
|
47
54
|
- `aw directory <domain>/<alias>` performs directory lookup.
|
|
48
55
|
|