commits
the html-rewriter.ts regex-matches attribute names (src, href, action,
data, poster, srcset) with \b word boundaries across the entire HTML
string — it doesn't exclude <script> tags. any JS variable named
`data`, `src`, etc. followed by `=` gets rewritten as a path.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
previous description said wisp only rewrites HTML href/src attributes.
wrong — it also rewrites inside <script> tags. anything matching
`= /...` gets path-prefixed, turning `= await res.json()` into
`=/did:plc:.../site/await res.json()`. the safe fix is always using
external .js files instead of inline scripts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
the previous replace_all merged closing ``` onto curl lines.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
plugin users may not have jq (or python3) installed. the curl examples
work fine without pretty-printing and the response shape comments
already document the structure.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
consolidated endpoint tables, param details, response shapes, and
source format values for all four Microcosm services in one reference
file. loaded on demand when Claude is actually building with the APIs,
not on every skill activation.
follows agentskills.io progressive disclosure pattern: SKILL.md is the
overview, references/ has the dense material Claude pulls when needed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
brief paragraph covering repos, DIDs, handles, collections, lexicons,
PDS, relays, AppViews, and portable identity. links to atproto.com's
understanding-atproto page for deeper grounding via WebFetch.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
the web explorer is for humans — claude needs API params. reframe the
web explorer as something to suggest to users, keep the actionable
guidance on sort and prefix filtering.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- app-patterns: document which Bluesky public API endpoints work without
auth (getProfile, getFeed, etc.) vs which don't (searchPosts, getTimeline)
- ufos: emphasize web explorer over raw API for browsing
- wisp: clarify auth is inline during deploy, no separate login subcommand
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
curl examples document endpoint URLs, parameter names, and response
shapes — not teaching Claude how to use curl. UFOs gets actual query
params (sort, prefix, collection detail) since the worker was guessing
blindly. CORS note in app-patterns. Spacedust gets a concrete websocat
example showing filter construction.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
new atproto skill triggers on any atproto work and shows
what tools are available. wisp skill now warns about subpath
serving and framework path requirements.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
remove code examples that teach Claude things it already knows
(fetch, Promise.all, WebSocket). keep only what it genuinely
doesn't have: endpoint URLs, param formats, filter logic,
decision guidance.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- point to live docs at each service's URL instead of mirroring API ref
- include only tested, working examples (verified with curl)
- note getBacklinkDids/getManyToMany are in source but not yet deployed
- dramatically shorter — 592 lines removed
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
constellation:
- restore getBacklinkDids XRPC endpoint (it exists in source)
- add getManyToMany endpoint (list items, not just counts)
- fix limits back to 100/1000 (source constants, web docs were stale)
- confirm cursor support on all paginated endpoints
- document /links/all endpoint for exploring all link types
slingshot:
- add blue.microcosm.identity.resolveMiniDoc (new stable path)
- add blue.microcosm.repo.getRecordByUri (ergonomic AT-URI endpoint)
- note com.atproto.sync.getRecord is work in progress
- note listRecords is not supported
- migrate examples from com.bad-example to blue.microcosm namespace
spacedust:
- add filter limits (subjects 50k, DIDs 10k, prefixes 100, sources 1k)
- document AND/OR semantics: subject filters OR each other, AND with sources
app-patterns:
- migrate to blue.microcosm namespace in examples
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- getManyToManyCounts is for many-to-many relationships, not batch queries
- getBacklinkDids XRPC endpoint doesn't exist (legacy /links/distinct-dids only)
- default limit is 16, max is 100 (not 100/1000)
- update app-patterns to use parallel getBacklinksCount instead of wrong batch endpoint
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
indexes Leaflet, Whitewind, Pckt, Offprint, Greengale via keyword,
semantic, and hybrid search. bundled as hosted MCP server.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
skills for Microcosm services (Constellation, Spacedust, Slingshot, UFOs),
bundled MCP servers (pdsx for record CRUD, atproto-mcp for docs search),
and common app-building patterns.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
the html-rewriter.ts regex-matches attribute names (src, href, action,
data, poster, srcset) with \b word boundaries across the entire HTML
string — it doesn't exclude <script> tags. any JS variable named
`data`, `src`, etc. followed by `=` gets rewritten as a path.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
previous description said wisp only rewrites HTML href/src attributes.
wrong — it also rewrites inside <script> tags. anything matching
`= /...` gets path-prefixed, turning `= await res.json()` into
`=/did:plc:.../site/await res.json()`. the safe fix is always using
external .js files instead of inline scripts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
consolidated endpoint tables, param details, response shapes, and
source format values for all four Microcosm services in one reference
file. loaded on demand when Claude is actually building with the APIs,
not on every skill activation.
follows agentskills.io progressive disclosure pattern: SKILL.md is the
overview, references/ has the dense material Claude pulls when needed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- app-patterns: document which Bluesky public API endpoints work without
auth (getProfile, getFeed, etc.) vs which don't (searchPosts, getTimeline)
- ufos: emphasize web explorer over raw API for browsing
- wisp: clarify auth is inline during deploy, no separate login subcommand
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
curl examples document endpoint URLs, parameter names, and response
shapes — not teaching Claude how to use curl. UFOs gets actual query
params (sort, prefix, collection detail) since the worker was guessing
blindly. CORS note in app-patterns. Spacedust gets a concrete websocat
example showing filter construction.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
constellation:
- restore getBacklinkDids XRPC endpoint (it exists in source)
- add getManyToMany endpoint (list items, not just counts)
- fix limits back to 100/1000 (source constants, web docs were stale)
- confirm cursor support on all paginated endpoints
- document /links/all endpoint for exploring all link types
slingshot:
- add blue.microcosm.identity.resolveMiniDoc (new stable path)
- add blue.microcosm.repo.getRecordByUri (ergonomic AT-URI endpoint)
- note com.atproto.sync.getRecord is work in progress
- note listRecords is not supported
- migrate examples from com.bad-example to blue.microcosm namespace
spacedust:
- add filter limits (subjects 50k, DIDs 10k, prefixes 100, sources 1k)
- document AND/OR semantics: subject filters OR each other, AND with sources
app-patterns:
- migrate to blue.microcosm namespace in examples
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- getManyToManyCounts is for many-to-many relationships, not batch queries
- getBacklinkDids XRPC endpoint doesn't exist (legacy /links/distinct-dids only)
- default limit is 16, max is 100 (not 100/1000)
- update app-patterns to use parallel getBacklinksCount instead of wrong batch endpoint
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>