.claude/skills/browsing-constructs/SKILL.md
Browse and install construct packs from the Loa Constructs Registry
npx skillsauth add 0xhoneyjar/loa-finn constructsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Unified construct discovery surface for the Constructs Network. This skill is a thin API client — all search intelligence, ranking, and composability analysis lives in the Constructs Network API.
LOA_CONSTRUCTS_API_URL env var, default https://api.constructs.network/v1LOA_CONSTRUCTS_API_KEY env var or ~/.loa/credentials.json (for premium packs)/constructs (no args) — Browse-First DiscoveryFetch the full catalog and display grouped by category.
API call:
GET {API}/constructs?per_page=100&include_composability=true
Output format:
Constructs Network — 23 constructs
design (8)
🎨 artisan (14 skills) — Design systems craft
🖼️ the-easel (4 skills) — Aesthetic direction studio
⚒️ the-mint (8 skills) — Material transformation pipeline
security (3)
🛡️ hardening (7 skills) — Defensive artifact forge
🧪 crucible (5 skills) — Journey validation testing
🔑 dynamic-auth (3 skills) — Wallet identity resolution
research (2)
🕳️ k-hole (2 skills) — Non-extractive pair research
🦎 gecko (3 skills) — Autonomous ecosystem intelligence
...
Browse: constructs.network/constructs
Grouping rules:
category field from API response/constructs <natural query> — Intent SearchFetch ranked results matching the user's natural language query.
API call:
GET {API}/constructs?q={query}&include_skills=true&include_composability=true
Output format:
Constructs Network — 23 constructs
Matching "security audit":
🛡️ hardening (7 skills) [VERIFIED]
Defensive artifact forge
Skills: /threat-model /security-review /pen-test /postmortem
Works with: observer → protocol
Install: /constructs install hardening
🧪 crucible (5 skills) [COMMUNITY]
Journey validation testing
Skills: /validate /test-journey /detect-gaps
Works with: observer ↔ (circular)
Install: /constructs install crucible
Browse: constructs.network/constructs?q=security+audit
Display rules:
[VERIFIED], [COMMUNITY], [UNVERIFIED]... if more)→ (depends on), ← (depended by), ↔ (circular)Zero results: If the API returns no matches, output:
No constructs match "<query>".
Try: npx skills find <query>
/constructs compose — Composability ViewShow what constructs pair with currently installed constructs.
Steps:
installed=$(.claude/scripts/constructs-loader.sh list 2>/dev/null)
GET {API}/constructs?per_page=100&include_composability=true
Output format:
Composability for your installed constructs:
You have: observer, artisan
Works with observer:
→ crucible (required, circular) — Journey validation testing
→ hardening (depends on observer) — Defensive artifact forge
→ protocol (depends on observer) — On-chain verification
Works with artisan:
→ the-easel (depends on artisan) — Aesthetic direction studio
→ the-speakers (optional) — Psychoacoustic engineering
Install: /constructs install <slug>
Edge cases:
/constructs to browse."/constructs install <slug> — InstallDirect installation without browse UI.
.claude/scripts/constructs-install.sh pack <slug>/constructs register — RegisterRegister a new construct with the network. Delegates to existing registration flow.
/constructs sync — SyncSync installed constructs with the registry. Delegates to existing sync flow.
/constructs status — StatusShow status of installed constructs, versions, and update availability.
.claude/scripts/constructs-loader.sh list
.claude/scripts/constructs-loader.sh check-updates
/constructs auth — AuthenticationCheck or set up authentication for premium packs.
.claude/scripts/constructs-auth.sh status
Guide user through API key setup. Keys from: LOA_CONSTRUCTS_API_KEY env var, ~/.loa/credentials.json, or ~/.loa-constructs/credentials.json (legacy).
.claude/scripts/constructs-auth.sh setup <api_key>
This skill should activate (with search mode) when the user says things like:
When a passive trigger fires, treat the trailing text as the search query and execute the /constructs <query> flow.
The skill expects the API to return constructs in this shape:
{
"data": [
{
"slug": "hardening",
"name": "Hardening",
"description": "Defensive artifact forge",
"icon": "🛡️",
"category": "security",
"skills_count": 7,
"verification_tier": "VERIFIED",
"skills": [
{ "slug": "threat-model", "command": "/threat-model" }
],
"composability": {
"depends_on": ["observer"],
"depended_by": ["protocol"],
"optional": []
}
}
],
"meta": {
"total": 23,
"page": 1,
"per_page": 100
}
}
If the API returns a different shape, adapt gracefully. The skills and composability fields are only present when include_skills=true and include_composability=true query params are set.
| Error | Handling |
|-------|----------|
| Network failure | Show error, suggest retrying. If cached data available, use it. |
| API returns 401 | "Authentication required for this operation. Run /constructs auth setup." |
| API returns 404 | "Construct not found. Run /constructs to browse available constructs." |
| API returns 500 | "Constructs Network API error. Try again later." |
| No LOA_CONSTRUCTS_API_URL set | Use default https://api.constructs.network/v1 |
Installed packs go to .claude/constructs/packs/ which is gitignored.
Installation metadata tracked in .constructs-meta.json.
.claude/scripts/constructs-auth.sh — Authentication management.claude/scripts/constructs-browse.sh — Pack discovery (legacy, prefer API).claude/scripts/constructs-install.sh — Installation.claude/scripts/constructs-loader.sh — Skill loading.claude/scripts/constructs-lib.sh — Shared utilitiestesting
# valid-skill Test skill with valid license for unit testing. ## Purpose Used in test_constructs_loader.bats to verify correct handling of valid licenses.
testing
# grace-skill Test skill in license grace period for unit testing. ## Purpose Used in test_constructs_loader.bats to verify correct handling of licenses in grace period.
testing
# expired-skill Test skill with expired license for unit testing. ## Purpose Used in test_constructs_loader.bats to verify correct handling of expired licenses.
testing
# skill-b Test skill B from test-pack for unit testing. ## Purpose Used in test_pack_support.bats to verify pack validation and skill loading.