@aporthq/aport-agent-guardrails 1.0.8
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/LICENSE +217 -0
- package/README.md +481 -0
- package/bin/agent-guardrails +133 -0
- package/bin/aport-create-passport.sh +444 -0
- package/bin/aport-cursor-hook.sh +90 -0
- package/bin/aport-guardrail-api.sh +108 -0
- package/bin/aport-guardrail-bash.sh +394 -0
- package/bin/aport-guardrail-v2.sh +5 -0
- package/bin/aport-guardrail.sh +5 -0
- package/bin/aport-resolve-paths.sh +71 -0
- package/bin/aport-status.sh +276 -0
- package/bin/frameworks/crewai.sh +49 -0
- package/bin/frameworks/cursor.sh +95 -0
- package/bin/frameworks/langchain.sh +48 -0
- package/bin/frameworks/n8n.sh +36 -0
- package/bin/frameworks/openclaw.sh +19 -0
- package/bin/lib/allowlist.sh +18 -0
- package/bin/lib/common.sh +28 -0
- package/bin/lib/config.sh +46 -0
- package/bin/lib/constants.sh +232 -0
- package/bin/lib/detect.sh +65 -0
- package/bin/lib/error.sh +269 -0
- package/bin/lib/passport.sh +19 -0
- package/bin/lib/templates/.gitkeep +1 -0
- package/bin/lib/templates/config.yaml +6 -0
- package/bin/lib/validation.sh +206 -0
- package/bin/openclaw +660 -0
- package/docs/ADDING_A_FRAMEWORK.md +87 -0
- package/docs/AGENTS.md.example +40 -0
- package/docs/CODE_REVIEW.md +192 -0
- package/docs/DEPLOYMENT_READINESS.md +81 -0
- package/docs/FAQ_SECURITY_SCANNERS.md +373 -0
- package/docs/FRAMEWORK_ROADMAP.md +41 -0
- package/docs/HOSTED_PASSPORT_SETUP.md +362 -0
- package/docs/IMPLEMENTING_YOUR_OWN_EVALUATOR.md +433 -0
- package/docs/OPENCLAW_COMPATIBILITY.md +73 -0
- package/docs/OPENCLAW_LOCAL_INTEGRATION.md +596 -0
- package/docs/OPENCLAW_TOOLS_AND_POLICIES.md +54 -0
- package/docs/QUICKSTART.md +470 -0
- package/docs/QUICKSTART_OPENCLAW_PLUGIN.md +470 -0
- package/docs/README.md +28 -0
- package/docs/RELEASE.md +87 -0
- package/docs/REPO_LAYOUT.md +47 -0
- package/docs/SKILLS_ECOSYSTEM_ANALYSIS_FEB17.md +1260 -0
- package/docs/TOOL_POLICY_MAPPING.md +46 -0
- package/docs/UPGRADE.md +46 -0
- package/docs/VERIFICATION_METHODS.md +97 -0
- package/docs/assets/README.md +8 -0
- package/docs/assets/porter.svg +54 -0
- package/docs/development/ERROR_CODES.md +616 -0
- package/docs/frameworks/GITHUB_ISSUE_PROPOSALS.md +1105 -0
- package/docs/frameworks/crewai.md +114 -0
- package/docs/frameworks/cursor.md +159 -0
- package/docs/frameworks/langchain.md +72 -0
- package/docs/frameworks/n8n.md +40 -0
- package/docs/frameworks/openclaw.md +40 -0
- package/docs/launch/ADD_APORT_AWESOME_LISTS_INSTRUCTIONS.md +146 -0
- package/docs/launch/ANNOUNCEMENT_GUIDE.md +266 -0
- package/docs/launch/AWESOME_REPOS.md +53 -0
- package/docs/launch/CURSOR_VSCODE_HOOKS_RESEARCH.md +77 -0
- package/docs/launch/DEMO_TERMINAL_OUTPUT.txt +48 -0
- package/docs/launch/DRY_AND_PLAN_CHECKLIST.md +47 -0
- package/docs/launch/EVIDENCE_README.md +61 -0
- package/docs/launch/EVIDENCE_TERMINAL_CAPTURE.txt +10 -0
- package/docs/launch/FRAMEWORK_SUPPORT_PLAN.md +1640 -0
- package/docs/launch/LAUNCH_READINESS_CHECKLIST.md +237 -0
- package/docs/launch/LAUNCH_STRATEGY_SUMMARY.md +464 -0
- package/docs/launch/OPENCLAW_FEEDBACK_AND_FIXES.md +85 -0
- package/docs/launch/POST_1_VALENTINE_IMPROVED.md +233 -0
- package/docs/launch/POST_2_GUARDRAIL_IMPROVED.md +369 -0
- package/docs/launch/PRE_LAUNCH_FIXES.md +766 -0
- package/docs/launch/QUICK_LAUNCH_CHECKLIST.md +400 -0
- package/docs/launch/READINESS_SUMMARY.md +262 -0
- package/docs/launch/README.md +68 -0
- package/docs/launch/USER_STORIES.md +327 -0
- package/docs/launch/scripts/add-aport-awesome-pr.sh +69 -0
- package/docs/operations/MONITORING.md +588 -0
- package/docs/reviews/2026-02-18-staff-review.md +268 -0
- package/extensions/openclaw-aport/README.md +415 -0
- package/extensions/openclaw-aport/index.js +625 -0
- package/extensions/openclaw-aport/openclaw-aport.js +7 -0
- package/extensions/openclaw-aport/openclaw.plugin.json +46 -0
- package/extensions/openclaw-aport/package.json +36 -0
- package/extensions/openclaw-aport/test.js +307 -0
- package/external/aport-policies/README.md +363 -0
- package/external/aport-policies/agent.session.create.v1/README.md +345 -0
- package/external/aport-policies/agent.session.create.v1/policy.json +162 -0
- package/external/aport-policies/agent.tool.register.v1/README.md +361 -0
- package/external/aport-policies/agent.tool.register.v1/policy.json +172 -0
- package/external/aport-policies/code.release.publish.v1/README.md +51 -0
- package/external/aport-policies/code.release.publish.v1/policy.json +121 -0
- package/external/aport-policies/code.repository.merge.v1/README.md +287 -0
- package/external/aport-policies/code.repository.merge.v1/express.example.js +332 -0
- package/external/aport-policies/code.repository.merge.v1/fastapi.example.py +370 -0
- package/external/aport-policies/code.repository.merge.v1/policy.json +162 -0
- package/external/aport-policies/data.export.create.v1/README.md +226 -0
- package/external/aport-policies/data.export.create.v1/express.example.js +172 -0
- package/external/aport-policies/data.export.create.v1/fastapi.example.py +165 -0
- package/external/aport-policies/data.export.create.v1/policy.json +133 -0
- package/external/aport-policies/data.report.ingest.v1/README.md +134 -0
- package/external/aport-policies/data.report.ingest.v1/express.example.js +105 -0
- package/external/aport-policies/data.report.ingest.v1/minimal-example.js +68 -0
- package/external/aport-policies/data.report.ingest.v1/policy.json +174 -0
- package/external/aport-policies/finance.crypto.trade.v1/README.md +146 -0
- package/external/aport-policies/finance.crypto.trade.v1/express.example.js +109 -0
- package/external/aport-policies/finance.crypto.trade.v1/minimal-example.js +65 -0
- package/external/aport-policies/finance.crypto.trade.v1/policy.json +176 -0
- package/external/aport-policies/finance.payment.charge.v1/README.md +326 -0
- package/external/aport-policies/finance.payment.charge.v1/express.example.js +250 -0
- package/external/aport-policies/finance.payment.charge.v1/fastapi.example.py +227 -0
- package/external/aport-policies/finance.payment.charge.v1/minimal-example.js +64 -0
- package/external/aport-policies/finance.payment.charge.v1/policy.json +224 -0
- package/external/aport-policies/finance.payment.charge.v1/tests/contexts.jsonl +12 -0
- package/external/aport-policies/finance.payment.charge.v1/tests/expected.jsonl +12 -0
- package/external/aport-policies/finance.payment.charge.v1/tests/passport.instance.json +42 -0
- package/external/aport-policies/finance.payment.charge.v1/tests/passport.template.json +40 -0
- package/external/aport-policies/finance.payment.charge.v1/tests/payments-charge-policy.test.js +817 -0
- package/external/aport-policies/finance.payment.charge.v1/tests/test_payments_charge_policy.py +486 -0
- package/external/aport-policies/finance.payment.payout.v1/README.md +78 -0
- package/external/aport-policies/finance.payment.payout.v1/policy.json +181 -0
- package/external/aport-policies/finance.payment.refund.v1/README.md +275 -0
- package/external/aport-policies/finance.payment.refund.v1/express.example.js +167 -0
- package/external/aport-policies/finance.payment.refund.v1/fastapi.example.py +136 -0
- package/external/aport-policies/finance.payment.refund.v1/minimal-example.js +183 -0
- package/external/aport-policies/finance.payment.refund.v1/policy.json +216 -0
- package/external/aport-policies/finance.payment.refund.v1/tests/refunds-policy.test.js +924 -0
- package/external/aport-policies/finance.payment.refund.v1/tests/test_refunds_policy.py +778 -0
- package/external/aport-policies/finance.transaction.execute.v1/README.md +309 -0
- package/external/aport-policies/finance.transaction.execute.v1/express.example.js +261 -0
- package/external/aport-policies/finance.transaction.execute.v1/fastapi.example.py +231 -0
- package/external/aport-policies/finance.transaction.execute.v1/minimal-example.js +78 -0
- package/external/aport-policies/finance.transaction.execute.v1/policy.json +189 -0
- package/external/aport-policies/finance.transaction.execute.v1/tests/contexts.jsonl +12 -0
- package/external/aport-policies/finance.transaction.execute.v1/tests/expected.jsonl +12 -0
- package/external/aport-policies/finance.transaction.execute.v1/tests/passport.instance.json +42 -0
- package/external/aport-policies/finance.transaction.execute.v1/tests/passport.template.json +42 -0
- package/external/aport-policies/finance.transaction.execute.v1/tests/test_transactions_policy.py +214 -0
- package/external/aport-policies/finance.transaction.execute.v1/tests/transactions-policy.test.js +306 -0
- package/external/aport-policies/governance.data.access.v1/README.md +292 -0
- package/external/aport-policies/governance.data.access.v1/express.example.js +321 -0
- package/external/aport-policies/governance.data.access.v1/fastapi.example.py +279 -0
- package/external/aport-policies/governance.data.access.v1/minimal-example.js +65 -0
- package/external/aport-policies/governance.data.access.v1/policy.json +208 -0
- package/external/aport-policies/governance.data.access.v1/tests/contexts.jsonl +12 -0
- package/external/aport-policies/governance.data.access.v1/tests/data-access-policy.test.js +308 -0
- package/external/aport-policies/governance.data.access.v1/tests/expected.jsonl +12 -0
- package/external/aport-policies/governance.data.access.v1/tests/passport.instance.json +56 -0
- package/external/aport-policies/governance.data.access.v1/tests/passport.template.json +56 -0
- package/external/aport-policies/governance.data.access.v1/tests/test_data_access_policy.py +214 -0
- package/external/aport-policies/legal.contract.review.v1/README.md +109 -0
- package/external/aport-policies/legal.contract.review.v1/policy.json +378 -0
- package/external/aport-policies/legal.contract.review.v1/tests/legal-contract-review-policy.test.js +609 -0
- package/external/aport-policies/legal.contract.review.v1/tests/passport.template.json +49 -0
- package/external/aport-policies/mcp.tool.execute.v1/README.md +301 -0
- package/external/aport-policies/mcp.tool.execute.v1/policy.json +141 -0
- package/external/aport-policies/messaging.message.send.v1/README.md +230 -0
- package/external/aport-policies/messaging.message.send.v1/express.example.js +183 -0
- package/external/aport-policies/messaging.message.send.v1/fastapi.example.py +193 -0
- package/external/aport-policies/messaging.message.send.v1/policy.json +144 -0
- package/external/aport-policies/policy-template.json +107 -0
- package/external/aport-policies/system.command.execute.v1/README.md +275 -0
- package/external/aport-policies/system.command.execute.v1/policy.json +146 -0
- package/external/aport-spec/CONTRIBUTING.md +273 -0
- package/external/aport-spec/LICENSE +21 -0
- package/external/aport-spec/README.md +168 -0
- package/external/aport-spec/conformance/README.md +294 -0
- package/external/aport-spec/conformance/cases/data.export.v1/contexts/allow_users.json +6 -0
- package/external/aport-spec/conformance/cases/data.export.v1/contexts/deny_pii.json +6 -0
- package/external/aport-spec/conformance/cases/data.export.v1/expected/allow_users.decision.json +19 -0
- package/external/aport-spec/conformance/cases/data.export.v1/expected/deny_pii.decision.json +19 -0
- package/external/aport-spec/conformance/cases/data.export.v1/passports/template.json +29 -0
- package/external/aport-spec/conformance/cases/payments.refunds.v1/contexts/allow_50usd.json +9 -0
- package/external/aport-spec/conformance/cases/payments.refunds.v1/contexts/deny_150usd.json +9 -0
- package/external/aport-spec/conformance/cases/payments.refunds.v1/contexts/deny_currency.json +9 -0
- package/external/aport-spec/conformance/cases/payments.refunds.v1/expected/allow_50usd.decision.json +19 -0
- package/external/aport-spec/conformance/cases/payments.refunds.v1/expected/deny_150usd.decision.json +19 -0
- package/external/aport-spec/conformance/cases/payments.refunds.v1/expected/deny_currency.decision.json +19 -0
- package/external/aport-spec/conformance/cases/payments.refunds.v1/passports/template.json +42 -0
- package/external/aport-spec/conformance/package.json +44 -0
- package/external/aport-spec/conformance/pnpm-lock.yaml +642 -0
- package/external/aport-spec/conformance/src/cases.ts +371 -0
- package/external/aport-spec/conformance/src/ed25519.ts +167 -0
- package/external/aport-spec/conformance/src/jcs.ts +85 -0
- package/external/aport-spec/conformance/src/runner.ts +533 -0
- package/external/aport-spec/conformance/src/validators.ts +185 -0
- package/external/aport-spec/conformance/test-runner.js +315 -0
- package/external/aport-spec/conformance/tsconfig.json +21 -0
- package/external/aport-spec/error-schema.json +192 -0
- package/external/aport-spec/index.json +12 -0
- package/external/aport-spec/integrations/clawmoat/README.md +12 -0
- package/external/aport-spec/integrations/shield/README.md +245 -0
- package/external/aport-spec/integrations/shield/adapters/index.js +116 -0
- package/external/aport-spec/integrations/shield/adapters/system-command-execute.js +133 -0
- package/external/aport-spec/integrations/shield/test/README.md +58 -0
- package/external/aport-spec/integrations/shield/test/shield.md +40 -0
- package/external/aport-spec/integrations/shield/test/test-shield-to-verify.js +274 -0
- package/external/aport-spec/metrics-schema.json +504 -0
- package/external/aport-spec/oap/CHANGELOG.md +54 -0
- package/external/aport-spec/oap/VERSION.md +40 -0
- package/external/aport-spec/oap/capability-registry.md +229 -0
- package/external/aport-spec/oap/conformance.md +257 -0
- package/external/aport-spec/oap/decision-schema.json +114 -0
- package/external/aport-spec/oap/examples/context.refund.usd.50.json +9 -0
- package/external/aport-spec/oap/examples/decision.allow.sample.json +20 -0
- package/external/aport-spec/oap/examples/decision.deny.sample.json +23 -0
- package/external/aport-spec/oap/examples/passport.instance.v1.json +50 -0
- package/external/aport-spec/oap/examples/passport.template.v1.json +71 -0
- package/external/aport-spec/oap/oap-spec.md +426 -0
- package/external/aport-spec/oap/passport-schema.json +396 -0
- package/external/aport-spec/oap/security.md +213 -0
- package/external/aport-spec/oap/vc/context-oap-v1.jsonld +137 -0
- package/external/aport-spec/oap/vc/examples/oap-decision-vc.json +37 -0
- package/external/aport-spec/oap/vc/examples/oap-passport-vc.json +68 -0
- package/external/aport-spec/oap/vc/tools/INTEGRATION.md +375 -0
- package/external/aport-spec/oap/vc/tools/README.md +278 -0
- package/external/aport-spec/oap/vc/tools/examples/decision-to-vc.js +66 -0
- package/external/aport-spec/oap/vc/tools/examples/passport-to-vc.js +83 -0
- package/external/aport-spec/oap/vc/tools/examples/vc-to-decision.js +77 -0
- package/external/aport-spec/oap/vc/tools/examples/vc-to-passport.js +94 -0
- package/external/aport-spec/oap/vc/tools/package.json +38 -0
- package/external/aport-spec/oap/vc/tools/pnpm-lock.yaml +472 -0
- package/external/aport-spec/oap/vc/tools/src/cli.ts +226 -0
- package/external/aport-spec/oap/vc/tools/src/crypto-utils.ts +427 -0
- package/external/aport-spec/oap/vc/tools/src/index.ts +653 -0
- package/external/aport-spec/oap/vc/tools/src/test.ts +148 -0
- package/external/aport-spec/oap/vc/tools/src/vp.ts +382 -0
- package/external/aport-spec/oap/vc/tools/test-simple.js +214 -0
- package/external/aport-spec/oap/vc/tools/tsconfig.json +19 -0
- package/external/aport-spec/oap/vc/vc-mapping.md +443 -0
- package/external/aport-spec/passport-schema.json +586 -0
- package/external/aport-spec/rate-limiting.md +136 -0
- package/external/aport-spec/transport-profile.md +325 -0
- package/external/aport-spec/webhook-spec.md +314 -0
- package/package.json +70 -0
- package/skills/aport-agent-guardrail/SKILL.md +314 -0
- package/src/evaluator.js +252 -0
- package/src/server/index.js +72 -0
|
@@ -0,0 +1,1260 @@
|
|
|
1
|
+
# Skills Ecosystem Analysis: Should APort Target Skills?
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-02-17
|
|
4
|
+
**Scope:** Anthropic Skills (SKILL.md), ClawHub, Skills.sh (Vercel), Skills integration strategy
|
|
5
|
+
**Question:** Should APort guardrails be embedded in the skills layer? Will it drive adoption?
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Executive Summary
|
|
10
|
+
|
|
11
|
+
**Recommendation: YES, but as SECONDARY distribution channel, not primary strategy.**
|
|
12
|
+
|
|
13
|
+
**Confidence: 8/10**
|
|
14
|
+
|
|
15
|
+
### The Bottom Line
|
|
16
|
+
|
|
17
|
+
**Skills are a massive distribution opportunity** (20K+ installs in 6 hours for top Vercel skill, 5,700 OpenClaw skills pre-cleanup, 283+ malicious skills = 7.1% infection rate). BUT:
|
|
18
|
+
|
|
19
|
+
1. **You already have a skill** (`skills/aport-agent-guardrail/SKILL.md`) ✅
|
|
20
|
+
2. **Skills are the OUTPUT, not the INPUT** — users install the APort skill to GET guardrails, not to ADD guardrails to other skills
|
|
21
|
+
3. **Per-skill guardrails are wrong model** — authorization should be **global** (agent-level), not per-skill
|
|
22
|
+
4. **Security vulnerabilities are the WEDGE** — 7.1% malicious skills + Cisco disclosure = perfect timing for "install APort skill first"
|
|
23
|
+
|
|
24
|
+
**What to do:**
|
|
25
|
+
1. ✅ **Keep existing skill** (`aport-agent-guardrail`) — it's the installer/enforcer
|
|
26
|
+
2. ✅ **Publish to ClawHub + Skills.sh** — discovery + credibility
|
|
27
|
+
3. ❌ **Don't build per-skill auth** — breaks the security model
|
|
28
|
+
4. ✅ **Position as "install first" meta-skill** — "Before installing any skills, install APort to protect your agent"
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Part 1: What Are Skills? (2026 Landscape)
|
|
33
|
+
|
|
34
|
+
### The Skill Pattern (Anthropic Invention)
|
|
35
|
+
|
|
36
|
+
**Definition:** A `SKILL.md` file + optional code that gives AI agents new capabilities.
|
|
37
|
+
|
|
38
|
+
**Format:**
|
|
39
|
+
```markdown
|
|
40
|
+
---
|
|
41
|
+
name: skill-name
|
|
42
|
+
description: What this does
|
|
43
|
+
homepage: https://...
|
|
44
|
+
metadata: {...}
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
# Skill Name
|
|
48
|
+
Installation instructions, usage, examples
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Why it matters:**
|
|
52
|
+
- **Open standard** (any LLM can use it: GPT-4, Claude, Llama, DeepSeek)
|
|
53
|
+
- **Cross-platform** (Cursor, Windsurf, OpenClaw, n8n all support compatible formats)
|
|
54
|
+
- **Easy authoring** (markdown, not code)
|
|
55
|
+
|
|
56
|
+
### The Three Major Platforms
|
|
57
|
+
|
|
58
|
+
#### 1. OpenClaw / ClawHub
|
|
59
|
+
|
|
60
|
+
**Scale:**
|
|
61
|
+
- **5,705 community skills** (Feb 7, 2026)
|
|
62
|
+
- **Removed 2,419 suspicious** → **3,286 remaining**
|
|
63
|
+
- **283 malicious skills** (7.1% infection rate per Snyk scan)
|
|
64
|
+
- **200K+ GitHub stars** (fastest-growing repo ever)
|
|
65
|
+
|
|
66
|
+
**Security nightmare:**
|
|
67
|
+
- Prompt injection
|
|
68
|
+
- Data exfiltration
|
|
69
|
+
- API key leaks
|
|
70
|
+
- Backdoors and reverse shells
|
|
71
|
+
|
|
72
|
+
**APort fit:**
|
|
73
|
+
- ✅ OpenClaw already has `before_tool_call` plugin (you shipped this)
|
|
74
|
+
- ✅ ClawHub needs security layer (you're positioned correctly)
|
|
75
|
+
- ✅ Your skill (`aport-agent-guardrail`) is the installer
|
|
76
|
+
|
|
77
|
+
#### 2. Vercel Skills.sh
|
|
78
|
+
|
|
79
|
+
**Scale:**
|
|
80
|
+
- **Launched Jan 20, 2026**
|
|
81
|
+
- **20,900 installs in 6 hours** for top skill (Prompt Lookup)
|
|
82
|
+
- **Tens of thousands of installs** across all skills
|
|
83
|
+
- **140,000+ accesses** for Prompt Lookup
|
|
84
|
+
|
|
85
|
+
**Model:**
|
|
86
|
+
- Discovery platform (like npm for agent capabilities)
|
|
87
|
+
- `npx skills add <package>`
|
|
88
|
+
- No quality control (anyone can publish)
|
|
89
|
+
- Install count = only ranking mechanism (gameable)
|
|
90
|
+
|
|
91
|
+
**Recent partnership (Feb 17, 2026):**
|
|
92
|
+
- Gen + Vercel: "Agent Trust Hub" for security verification
|
|
93
|
+
- Transparent risk ratings for skills
|
|
94
|
+
|
|
95
|
+
**APort fit:**
|
|
96
|
+
- ✅ Skills.sh needs authorization layer
|
|
97
|
+
- ⚠️ Gen partnership is competitive (they're doing verification)
|
|
98
|
+
- ✅ But Gen does **scanning** (threat detection), APort does **enforcement** (pre-action authorization)
|
|
99
|
+
- ✅ Complementary, not competitive
|
|
100
|
+
|
|
101
|
+
#### 3. Anthropic / MCP Market
|
|
102
|
+
|
|
103
|
+
**Scale:**
|
|
104
|
+
- **"MCP Market"** (mcpmarket.com) — app store for AI skills
|
|
105
|
+
- **Model Context Protocol (MCP)** — standardized tool/API connections
|
|
106
|
+
- **80% of enterprise apps** expected to embed agents by 2026
|
|
107
|
+
|
|
108
|
+
**APort fit:**
|
|
109
|
+
- ✅ MCP is tool execution layer
|
|
110
|
+
- ✅ APort enforces before MCP tools run
|
|
111
|
+
- ✅ Natural integration point
|
|
112
|
+
|
|
113
|
+
### Market Size: Skills Are HUGE
|
|
114
|
+
|
|
115
|
+
| Metric | Scale | Source |
|
|
116
|
+
|--------|-------|--------|
|
|
117
|
+
| **OpenClaw skills** | 3,286 (post-cleanup) | Snyk, Feb 2026 |
|
|
118
|
+
| **Vercel top skill** | 20,900 installs (6 hours) | Dev Genius, Jan 2026 |
|
|
119
|
+
| **Prompt Lookup** | 140,000+ accesses | Search results |
|
|
120
|
+
| **Malicious skills** | 283 (7.1%) | Snyk scan, Feb 2026 |
|
|
121
|
+
| **Enterprise adoption** | 80% by end 2026 | IDC forecast |
|
|
122
|
+
| **Gartner prediction** | 40% of apps with AI agents | Gartner, 2026 |
|
|
123
|
+
|
|
124
|
+
**Skills are the distribution layer for agent capabilities.**
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Part 2: Current APort Skills Strategy
|
|
129
|
+
|
|
130
|
+
### What You Already Built
|
|
131
|
+
|
|
132
|
+
**File:** `/Users/uchi/Downloads/projects/aport-agent-guardrails/skills/aport-agent-guardrail/SKILL.md`
|
|
133
|
+
|
|
134
|
+
**What it does:**
|
|
135
|
+
- Installer for APort guardrails
|
|
136
|
+
- Runs `npx @aporthq/aport-agent-guardrails` or `./bin/openclaw`
|
|
137
|
+
- Installs OpenClaw plugin that enforces `before_tool_call`
|
|
138
|
+
- NOT a per-tool skill — it's the **enforcement layer**
|
|
139
|
+
|
|
140
|
+
**Key characteristics:**
|
|
141
|
+
- ✅ **Global enforcement** (all tools, not per-skill)
|
|
142
|
+
- ✅ **Deterministic** (cannot be bypassed)
|
|
143
|
+
- ✅ **Fail-closed** (errors block execution)
|
|
144
|
+
- ✅ **Audit-ready** (decision logs)
|
|
145
|
+
|
|
146
|
+
**Installation:**
|
|
147
|
+
```bash
|
|
148
|
+
npx @aporthq/aport-agent-guardrails
|
|
149
|
+
# or with hosted passport:
|
|
150
|
+
npx @aporthq/aport-agent-guardrails <agent_id>
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**What it IS NOT:**
|
|
154
|
+
- ❌ NOT a skill that users add to individual tool calls
|
|
155
|
+
- ❌ NOT opt-in per-skill authorization
|
|
156
|
+
- ❌ NOT a library other skills import
|
|
157
|
+
|
|
158
|
+
**What it IS:**
|
|
159
|
+
- ✅ **Meta-skill:** Installs global enforcement layer
|
|
160
|
+
- ✅ **"Install first" skill:** Protects all other skills
|
|
161
|
+
- ✅ **Platform-level security:** Like antivirus, not per-app permissions
|
|
162
|
+
|
|
163
|
+
### Where It's Published (Currently)
|
|
164
|
+
|
|
165
|
+
**Published:**
|
|
166
|
+
- ✅ npm: `@aporthq/aport-agent-guardrails`
|
|
167
|
+
- ✅ GitHub: `aporthq/aport-agent-guardrails`
|
|
168
|
+
- ✅ Skill file: `skills/aport-agent-guardrail/SKILL.md`
|
|
169
|
+
|
|
170
|
+
**NOT Published:**
|
|
171
|
+
- ❌ ClawHub (OpenClaw skills registry)
|
|
172
|
+
- ❌ Skills.sh (Vercel discovery platform)
|
|
173
|
+
- ❌ MCP Market (if exists)
|
|
174
|
+
- ❌ Awesome lists (VoltAgent, e2b-dev, etc.)
|
|
175
|
+
|
|
176
|
+
**Gap:** Distribution via skill marketplaces
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Part 3: The User's Idea (Analyzed)
|
|
181
|
+
|
|
182
|
+
### What You Proposed
|
|
183
|
+
|
|
184
|
+
> "Users to be able to deterministically include and define a pre-run pre-auth step which specifies agent_id/passport file which is standard Open Agent Passport (OAP) and then before the skill executes it does that step."
|
|
185
|
+
|
|
186
|
+
**Interpretation:** Per-skill authorization where each skill declares its own guardrail requirements.
|
|
187
|
+
|
|
188
|
+
### Two Possible Models
|
|
189
|
+
|
|
190
|
+
#### Model A: Global Enforcement (Current APort Model)
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
User installs APort skill (aport-agent-guardrail)
|
|
194
|
+
↓
|
|
195
|
+
APort plugin registers with OpenClaw
|
|
196
|
+
↓
|
|
197
|
+
Before EVERY tool call:
|
|
198
|
+
before_tool_call hook → APort evaluator → ALLOW/DENY
|
|
199
|
+
↓
|
|
200
|
+
All skills protected automatically
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**Pros:**
|
|
204
|
+
- ✅ Cannot be bypassed (platform-level)
|
|
205
|
+
- ✅ Consistent policy across all skills
|
|
206
|
+
- ✅ User installs once, protects everything
|
|
207
|
+
- ✅ Matches security best practices
|
|
208
|
+
|
|
209
|
+
**Cons:**
|
|
210
|
+
- ⚠️ Requires platform support (OpenClaw plugin, LangChain callback, etc.)
|
|
211
|
+
- ⚠️ Can't opt-out per-skill (but that's a feature, not a bug)
|
|
212
|
+
|
|
213
|
+
#### Model B: Per-Skill Authorization (Your Proposal)
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
Each skill declares in SKILL.md:
|
|
217
|
+
---
|
|
218
|
+
metadata:
|
|
219
|
+
aport:
|
|
220
|
+
agent_id: "ap_xxx"
|
|
221
|
+
policy: "system.command.execute"
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
Before skill executes:
|
|
225
|
+
Read agent_id from skill metadata
|
|
226
|
+
Call APort verify
|
|
227
|
+
If DENY, block skill
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**Pros:**
|
|
231
|
+
- ✅ Skill authors can specify authorization requirements
|
|
232
|
+
- ✅ More granular control per-skill
|
|
233
|
+
- ✅ Could work without platform support
|
|
234
|
+
|
|
235
|
+
**Cons:**
|
|
236
|
+
- ❌ **Bypassable** (user can remove metadata, fork skill)
|
|
237
|
+
- ❌ **Inconsistent** (skills without metadata are unprotected)
|
|
238
|
+
- ❌ **Trust model is inverted** (trusting skill author, not agent owner)
|
|
239
|
+
- ❌ **Performance overhead** (verify on every skill call, not tool call)
|
|
240
|
+
- ❌ **Wrong security boundary** (authorization is agent-level, not skill-level)
|
|
241
|
+
|
|
242
|
+
### Which Model Is Correct?
|
|
243
|
+
|
|
244
|
+
**Model A (Global) is correct for security.**
|
|
245
|
+
|
|
246
|
+
**Why:**
|
|
247
|
+
1. **Security must be at platform level** — users shouldn't be able to opt out
|
|
248
|
+
2. **Authorization is agent-level** — "What can THIS agent do?" not "What can this skill do?"
|
|
249
|
+
3. **Trust model:** Agent owner trusts APort, APort authorizes tools, tools run if authorized
|
|
250
|
+
4. **Can't be bypassed:** Malicious skills can't remove global enforcement
|
|
251
|
+
|
|
252
|
+
**Model B (Per-Skill) breaks security:**
|
|
253
|
+
1. **Bypassable:** Fork skill, remove `aport` metadata, now unprotected
|
|
254
|
+
2. **Opt-in:** Skills without metadata run unprotected
|
|
255
|
+
3. **Wrong boundary:** Skill author shouldn't control agent authorization
|
|
256
|
+
4. **Doesn't stop malicious skills:** Attacker publishes skill without APort metadata
|
|
257
|
+
|
|
258
|
+
**Analogy:**
|
|
259
|
+
- **Model A = Operating system firewall** (protects all apps)
|
|
260
|
+
- **Model B = Apps declaring they want firewall rules** (apps can opt out)
|
|
261
|
+
|
|
262
|
+
**Correct model:** Operating system firewall (Model A)
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Part 4: Should APort Target Skills? (Strategic Analysis)
|
|
267
|
+
|
|
268
|
+
### The Opportunity
|
|
269
|
+
|
|
270
|
+
**Skills are the distribution layer for agent capabilities.**
|
|
271
|
+
|
|
272
|
+
**Numbers:**
|
|
273
|
+
- 20,900 installs in 6 hours (top Vercel skill)
|
|
274
|
+
- 3,286 OpenClaw skills (post-cleanup)
|
|
275
|
+
- 7.1% malicious skill infection rate
|
|
276
|
+
- 80% enterprise adoption by EOY 2026
|
|
277
|
+
|
|
278
|
+
**APort as "install first" skill:**
|
|
279
|
+
- Users browse ClawHub/Skills.sh
|
|
280
|
+
- See security warnings about malicious skills
|
|
281
|
+
- Install `aport-agent-guardrail` FIRST
|
|
282
|
+
- Now protected when installing other skills
|
|
283
|
+
|
|
284
|
+
**Positioning:**
|
|
285
|
+
> "Before installing any skills, install APort to protect your agent from malicious skills, data exfiltration, and policy violations."
|
|
286
|
+
|
|
287
|
+
**This is HUGE if executed correctly.**
|
|
288
|
+
|
|
289
|
+
### What Works: Distribution via Skill Marketplaces
|
|
290
|
+
|
|
291
|
+
**Action items:**
|
|
292
|
+
|
|
293
|
+
1. **Publish to ClawHub**
|
|
294
|
+
- Submit `aport-agent-guardrail` skill
|
|
295
|
+
- Category: Security / Infrastructure
|
|
296
|
+
- Description: "Install first to protect your agent from malicious skills"
|
|
297
|
+
|
|
298
|
+
2. **Publish to Skills.sh**
|
|
299
|
+
- Package: `@aporthq/aport-agent-guardrails`
|
|
300
|
+
- Install: `npx skills add @aporthq/aport-agent-guardrails`
|
|
301
|
+
- Ranking: Target top 10 in security category
|
|
302
|
+
|
|
303
|
+
3. **Publish to awesome lists**
|
|
304
|
+
- VoltAgent/awesome-openclaw-skills (Security & Passwords)
|
|
305
|
+
- e2b-dev/awesome-ai-agents
|
|
306
|
+
- Jenqyang/Awesome-AI-Agents
|
|
307
|
+
|
|
308
|
+
4. **Partner with Gen (Skills.sh security partner)**
|
|
309
|
+
- Gen does threat scanning
|
|
310
|
+
- APort does pre-action enforcement
|
|
311
|
+
- Complementary: "Gen detects, APort blocks"
|
|
312
|
+
|
|
313
|
+
**Expected impact:**
|
|
314
|
+
- 10K+ installs in first month (conservative)
|
|
315
|
+
- Top 10 security skill on ClawHub
|
|
316
|
+
- Top 20 skill on Skills.sh
|
|
317
|
+
- Reference in security guides
|
|
318
|
+
|
|
319
|
+
### What Doesn't Work: Per-Skill Authorization
|
|
320
|
+
|
|
321
|
+
**Don't do:**
|
|
322
|
+
- ❌ Per-skill `aport` metadata field
|
|
323
|
+
- ❌ "Skills can specify their agent_id"
|
|
324
|
+
- ❌ Opt-in authorization per-skill
|
|
325
|
+
|
|
326
|
+
**Why:**
|
|
327
|
+
- Breaks security model (bypassable)
|
|
328
|
+
- Wrong trust boundary (skill author ≠ agent owner)
|
|
329
|
+
- Doesn't stop malicious skills
|
|
330
|
+
- Adds complexity without security benefit
|
|
331
|
+
|
|
332
|
+
**Keep:**
|
|
333
|
+
- ✅ Global enforcement (platform plugin)
|
|
334
|
+
- ✅ Single APort skill (the installer)
|
|
335
|
+
- ✅ "Install first" positioning
|
|
336
|
+
|
|
337
|
+
### What's Unclear: Skill-Specific Policies
|
|
338
|
+
|
|
339
|
+
**Open question:** Should different skills have different policy packs?
|
|
340
|
+
|
|
341
|
+
**Example:**
|
|
342
|
+
- **Git skill:** Needs `git.create_pr`, `git.merge` capabilities
|
|
343
|
+
- **Messaging skill:** Needs `messaging.message.send` capability
|
|
344
|
+
- **Shell skill:** Needs `system.command.execute` capability
|
|
345
|
+
|
|
346
|
+
**Two approaches:**
|
|
347
|
+
|
|
348
|
+
#### Approach 1: Agent-Level Policy (Current)
|
|
349
|
+
```json
|
|
350
|
+
// Passport defines what THIS AGENT can do
|
|
351
|
+
{
|
|
352
|
+
"capabilities": [
|
|
353
|
+
"system.command.execute",
|
|
354
|
+
"messaging.message.send",
|
|
355
|
+
"git.create_pr"
|
|
356
|
+
],
|
|
357
|
+
"limits": {
|
|
358
|
+
"system.command.execute": {
|
|
359
|
+
"allowed_commands": ["git", "npm", "ls"]
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
- Agent can use ANY skill that needs these capabilities
|
|
366
|
+
- Authorization at tool level (before `exec.run`, `messaging.send`)
|
|
367
|
+
- Skills don't declare capabilities
|
|
368
|
+
|
|
369
|
+
#### Approach 2: Skill-Declared Capabilities
|
|
370
|
+
```yaml
|
|
371
|
+
# In SKILL.md metadata
|
|
372
|
+
metadata:
|
|
373
|
+
capabilities_required:
|
|
374
|
+
- system.command.execute
|
|
375
|
+
- git.create_pr
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
- Skill declares what it needs
|
|
379
|
+
- Agent passport must have these capabilities
|
|
380
|
+
- Before skill installs, check if agent has required capabilities
|
|
381
|
+
- **Installation-time authorization** (not runtime)
|
|
382
|
+
|
|
383
|
+
**Which is better?**
|
|
384
|
+
|
|
385
|
+
**Approach 1 (Agent-Level) is correct for RUNTIME authorization.**
|
|
386
|
+
- Tool execution is authorized, not skill installation
|
|
387
|
+
- Agent owner controls what tools can run
|
|
388
|
+
- Skills don't bypass authorization by declaring capabilities
|
|
389
|
+
|
|
390
|
+
**Approach 2 (Skill-Declared) could work for INSTALLATION warnings.**
|
|
391
|
+
- "This skill requires `system.command.execute`. Your agent allows: `git`, `npm`, `ls`."
|
|
392
|
+
- User decides whether to install skill
|
|
393
|
+
- NOT enforcement, just transparency
|
|
394
|
+
|
|
395
|
+
**Recommendation:**
|
|
396
|
+
- ✅ Runtime authorization: Agent-level (Approach 1)
|
|
397
|
+
- ✅ Installation warnings: Skill-declared capabilities (Approach 2) — inform user, don't enforce
|
|
398
|
+
|
|
399
|
+
---
|
|
400
|
+
|
|
401
|
+
## Part 5: Technical Integration Analysis
|
|
402
|
+
|
|
403
|
+
### Current Architecture
|
|
404
|
+
|
|
405
|
+
**From `/Users/uchi/Downloads/projects/aport-agent-guardrails/bin/openclaw`:**
|
|
406
|
+
|
|
407
|
+
```bash
|
|
408
|
+
# Installer does:
|
|
409
|
+
1. Run passport wizard (create or use hosted)
|
|
410
|
+
2. Register OpenClaw plugin (openclaw-aport)
|
|
411
|
+
3. Write config (agent_id or passport_file)
|
|
412
|
+
4. Install wrapper scripts to ~/.openclaw/.skills/
|
|
413
|
+
5. Plugin enforces before_tool_call globally
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
**From `/Users/uchi/Downloads/projects/aport-agent-guardrails/extensions/openclaw-aport/`:**
|
|
417
|
+
|
|
418
|
+
```typescript
|
|
419
|
+
// Plugin hooks into OpenClaw
|
|
420
|
+
export async function before_tool_call(
|
|
421
|
+
tool: Tool,
|
|
422
|
+
params: ToolParams
|
|
423
|
+
): Promise<{ block: boolean; blockReason?: string }> {
|
|
424
|
+
// Map tool → OAP capability
|
|
425
|
+
const capability = mapToolToCapability(tool.name);
|
|
426
|
+
|
|
427
|
+
// Load passport + policy
|
|
428
|
+
const passport = loadPassport(config);
|
|
429
|
+
const policy = loadPolicy(capability);
|
|
430
|
+
|
|
431
|
+
// Verify
|
|
432
|
+
const decision = await verify(passport, policy, params);
|
|
433
|
+
|
|
434
|
+
if (!decision.allow) {
|
|
435
|
+
return { block: true, blockReason: decision.reasons[0].message };
|
|
436
|
+
}
|
|
437
|
+
return { block: false };
|
|
438
|
+
}
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
**Key points:**
|
|
442
|
+
- ✅ Global enforcement (all tools)
|
|
443
|
+
- ✅ Deterministic (platform hook)
|
|
444
|
+
- ✅ Cannot be bypassed
|
|
445
|
+
- ✅ Works with hosted or local passports
|
|
446
|
+
|
|
447
|
+
### How Skills Fit In
|
|
448
|
+
|
|
449
|
+
**Skills are PROTECTED, not PROTECTORS.**
|
|
450
|
+
|
|
451
|
+
```
|
|
452
|
+
User installs APort skill (aport-agent-guardrail)
|
|
453
|
+
↓
|
|
454
|
+
APort plugin active in OpenClaw
|
|
455
|
+
↓
|
|
456
|
+
User installs OTHER skills (git-skill, messaging-skill, etc.)
|
|
457
|
+
↓
|
|
458
|
+
When skills run tools:
|
|
459
|
+
OpenClaw intercepts tool call
|
|
460
|
+
↓
|
|
461
|
+
before_tool_call hook → APort evaluator
|
|
462
|
+
↓
|
|
463
|
+
ALLOW → tool runs
|
|
464
|
+
DENY → tool blocked
|
|
465
|
+
↓
|
|
466
|
+
Skills cannot bypass (they don't control the hook)
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
**Skills don't need to "know" about APort.**
|
|
470
|
+
- They just call tools normally
|
|
471
|
+
- APort intercepts at platform level
|
|
472
|
+
- Authorization is transparent to skills
|
|
473
|
+
|
|
474
|
+
### Could Skills Opt-In to Stricter Policies?
|
|
475
|
+
|
|
476
|
+
**Hypothetical:** Skill declares "I only need `git status`, not `git push`"
|
|
477
|
+
|
|
478
|
+
**Problem:** Who enforces this?
|
|
479
|
+
- If skill self-enforces → bypassable (malicious skill lies)
|
|
480
|
+
- If APort enforces → need skill → policy mapping
|
|
481
|
+
|
|
482
|
+
**Solution (if needed):**
|
|
483
|
+
|
|
484
|
+
```yaml
|
|
485
|
+
# SKILL.md
|
|
486
|
+
metadata:
|
|
487
|
+
aport_policy_hint:
|
|
488
|
+
capability: system.command.execute
|
|
489
|
+
allowed_commands: ["git status", "git log"]
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
**Enforcement:**
|
|
493
|
+
1. User installs skill
|
|
494
|
+
2. Installer reads `aport_policy_hint`
|
|
495
|
+
3. Installer **suggests** updating passport limits (doesn't enforce)
|
|
496
|
+
4. User approves or ignores
|
|
497
|
+
5. APort enforces passport limits (not skill metadata)
|
|
498
|
+
|
|
499
|
+
**This is installation-time ADVICE, not runtime enforcement.**
|
|
500
|
+
|
|
501
|
+
**Do we need this?**
|
|
502
|
+
- 🤔 Nice-to-have for transparency
|
|
503
|
+
- 🤔 Low priority (MVP is global enforcement)
|
|
504
|
+
- 🤔 Could add later if users request it
|
|
505
|
+
|
|
506
|
+
**For now: NO. Keep it simple.**
|
|
507
|
+
|
|
508
|
+
---
|
|
509
|
+
|
|
510
|
+
## Part 6: Comparison with SHIELD Integration
|
|
511
|
+
|
|
512
|
+
### SHIELD Model (from `/Users/uchi/Downloads/projects/agent-passport/spec/integrations/shield/`)
|
|
513
|
+
|
|
514
|
+
**What SHIELD does:**
|
|
515
|
+
- Community-curated threat feeds
|
|
516
|
+
- Defines threat patterns (prompt injection, data exfil, etc.)
|
|
517
|
+
- Provides threat intelligence INPUT to OAP
|
|
518
|
+
|
|
519
|
+
**How it maps to OAP:**
|
|
520
|
+
```
|
|
521
|
+
SHIELD threat feed (shield.md)
|
|
522
|
+
↓
|
|
523
|
+
Adapter translates to OAP policy pack
|
|
524
|
+
↓
|
|
525
|
+
Passport limits.{capability}.shield = threat data
|
|
526
|
+
↓
|
|
527
|
+
Evaluator enforces (before_tool_call)
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
**Key insight:** SHIELD is INPUT (threat data), OAP is ENFORCEMENT (authorization)
|
|
531
|
+
|
|
532
|
+
### Skills Model (Parallel)
|
|
533
|
+
|
|
534
|
+
**What skills provide:**
|
|
535
|
+
- Agent capabilities (git, messaging, shell, etc.)
|
|
536
|
+
- Tool implementations
|
|
537
|
+
- User-facing functionality
|
|
538
|
+
|
|
539
|
+
**How authorization works:**
|
|
540
|
+
```
|
|
541
|
+
Skills call tools
|
|
542
|
+
↓
|
|
543
|
+
Platform intercepts (before_tool_call)
|
|
544
|
+
↓
|
|
545
|
+
APort evaluator checks passport + policy
|
|
546
|
+
↓
|
|
547
|
+
ALLOW/DENY
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
**Key insight:** Skills are WORKLOAD (what agent does), APort is CONTROL PLANE (what's allowed)
|
|
551
|
+
|
|
552
|
+
### Similarities
|
|
553
|
+
|
|
554
|
+
| SHIELD | Skills | Parallel |
|
|
555
|
+
|--------|--------|----------|
|
|
556
|
+
| Threat intelligence INPUT | Capability provider | Both are data sources |
|
|
557
|
+
| Translated to OAP policy | Subject to APort authorization | OAP is the enforcer |
|
|
558
|
+
| Community-curated | Community-published | Distribution model similar |
|
|
559
|
+
| 7.1% malicious (ClawHub) | 7.1% malicious (ClawHub) | Same security problem |
|
|
560
|
+
|
|
561
|
+
**Both need APort enforcement, neither ARE the enforcer.**
|
|
562
|
+
|
|
563
|
+
### Positioning Alignment
|
|
564
|
+
|
|
565
|
+
**SHIELD positioning:**
|
|
566
|
+
> "SHIELD provides threat intelligence. OAP is the authorization standard. SHIELD is ONE input to OAP (alongside ClawMoat, CVE, custom rules)."
|
|
567
|
+
|
|
568
|
+
**Skills positioning:**
|
|
569
|
+
> "Skills provide agent capabilities. APort is the authorization layer. Skills run UNDER APort enforcement (cannot bypass)."
|
|
570
|
+
|
|
571
|
+
**Consistent narrative:**
|
|
572
|
+
- OAP = authorization standard
|
|
573
|
+
- SHIELD = threat intel input
|
|
574
|
+
- Skills = capability layer (protected BY APort)
|
|
575
|
+
- APort = enforcement (cannot be bypassed)
|
|
576
|
+
|
|
577
|
+
---
|
|
578
|
+
|
|
579
|
+
## Part 7: Adoption Strategy (How Skills Help APort Grow)
|
|
580
|
+
|
|
581
|
+
### The Security Wedge
|
|
582
|
+
|
|
583
|
+
**Problem:** 7.1% of OpenClaw skills are malicious (283 out of 3,286)
|
|
584
|
+
|
|
585
|
+
**Fear:** Users are scared to install skills
|
|
586
|
+
|
|
587
|
+
**Solution:** Install APort first, then install skills safely
|
|
588
|
+
|
|
589
|
+
**Messaging:**
|
|
590
|
+
> "283 malicious skills found on ClawHub. Install APort guardrails before installing any skills to protect your agent from data exfiltration, unauthorized commands, and policy violations."
|
|
591
|
+
|
|
592
|
+
**Call to action:**
|
|
593
|
+
```bash
|
|
594
|
+
# Step 1: Install APort (protects your agent)
|
|
595
|
+
npx @aporthq/aport-agent-guardrails
|
|
596
|
+
|
|
597
|
+
# Step 2: Now install skills safely
|
|
598
|
+
openclaw skills install git-skill
|
|
599
|
+
openclaw skills install messaging-skill
|
|
600
|
+
```
|
|
601
|
+
|
|
602
|
+
**This is the WEDGE.**
|
|
603
|
+
|
|
604
|
+
### Distribution Channels
|
|
605
|
+
|
|
606
|
+
**1. ClawHub (OpenClaw Skills Registry)**
|
|
607
|
+
|
|
608
|
+
**Action:**
|
|
609
|
+
- Submit `aport-agent-guardrail` skill
|
|
610
|
+
- Category: Security / Infrastructure
|
|
611
|
+
- Target: Top 10 most-installed security skills
|
|
612
|
+
|
|
613
|
+
**Expected reach:**
|
|
614
|
+
- 3,286 skills × avg 100 users/skill = 300K+ potential users
|
|
615
|
+
- If 1% install APort first = 3,000 installs
|
|
616
|
+
- If 5% install APort first = 15,000 installs
|
|
617
|
+
|
|
618
|
+
**2. Skills.sh (Vercel Discovery Platform)**
|
|
619
|
+
|
|
620
|
+
**Action:**
|
|
621
|
+
- Package: `@aporthq/aport-agent-guardrails`
|
|
622
|
+
- Install: `npx skills add @aporthq/aport-agent-guardrails`
|
|
623
|
+
- Target: Top 20 overall, Top 5 security
|
|
624
|
+
|
|
625
|
+
**Expected reach:**
|
|
626
|
+
- Top skill: 20,900 installs in 6 hours
|
|
627
|
+
- Top 20 skill: 1,000+ installs/day (conservative)
|
|
628
|
+
- Security category: 500+ installs/day
|
|
629
|
+
|
|
630
|
+
**3. Partnership with Gen (Skills.sh Security Partner)**
|
|
631
|
+
|
|
632
|
+
**Context:** Gen + Vercel partnership (Feb 17, 2026) for "Agent Trust Hub"
|
|
633
|
+
|
|
634
|
+
**Action:**
|
|
635
|
+
- Reach out to Gen
|
|
636
|
+
- Position: "Gen scans, APort enforces"
|
|
637
|
+
- Integration: Gen flags threats, recommends APort for enforcement
|
|
638
|
+
|
|
639
|
+
**Expected reach:**
|
|
640
|
+
- Gen's user base (unknown size)
|
|
641
|
+
- Co-marketing opportunity
|
|
642
|
+
- Credibility boost
|
|
643
|
+
|
|
644
|
+
**4. Awesome Lists (Community Curation)**
|
|
645
|
+
|
|
646
|
+
**Action:**
|
|
647
|
+
- PR to VoltAgent/awesome-openclaw-skills (Security & Passwords)
|
|
648
|
+
- PR to e2b-dev/awesome-ai-agents
|
|
649
|
+
- PR to Jenqyang/Awesome-AI-Agents
|
|
650
|
+
|
|
651
|
+
**Expected reach:**
|
|
652
|
+
- 1,000-5,000 GitHub stars per list
|
|
653
|
+
- Developer audience
|
|
654
|
+
- SEO + backlinks
|
|
655
|
+
|
|
656
|
+
**5. Security Guides + Documentation**
|
|
657
|
+
|
|
658
|
+
**Action:**
|
|
659
|
+
- Write: "How to Safely Install OpenClaw Skills"
|
|
660
|
+
- Write: "Protecting Your Agent from Malicious Skills"
|
|
661
|
+
- Submit to OpenClaw docs (security best practices)
|
|
662
|
+
|
|
663
|
+
**Expected reach:**
|
|
664
|
+
- Organic search traffic
|
|
665
|
+
- Referenced by OpenClaw team
|
|
666
|
+
- Developer mindshare
|
|
667
|
+
|
|
668
|
+
### Conversion Funnel
|
|
669
|
+
|
|
670
|
+
```
|
|
671
|
+
1. Developer hears about malicious skills (7.1% infection rate)
|
|
672
|
+
↓
|
|
673
|
+
2. Searches for "OpenClaw security" or "protect agent"
|
|
674
|
+
↓
|
|
675
|
+
3. Finds APort skill on ClawHub / Skills.sh / Awesome list
|
|
676
|
+
↓
|
|
677
|
+
4. Installs: npx @aporthq/aport-agent-guardrails
|
|
678
|
+
↓
|
|
679
|
+
5. Protected: Now can install other skills safely
|
|
680
|
+
↓
|
|
681
|
+
6. Upgrade path: Free → Pro ($$/mo for hosted passport, dashboards)
|
|
682
|
+
```
|
|
683
|
+
|
|
684
|
+
**Key metrics:**
|
|
685
|
+
- **Top of funnel:** Skill marketplace visibility
|
|
686
|
+
- **Middle:** Installation rate
|
|
687
|
+
- **Bottom:** Upgrade to Pro (hosted passport, compliance features)
|
|
688
|
+
|
|
689
|
+
**Expected conversion:**
|
|
690
|
+
- 10% of users who see APort skill will install
|
|
691
|
+
- 5% of installers will upgrade to Pro
|
|
692
|
+
- If 10,000 see it → 1,000 installs → 50 Pro users → $2,500 MRR (at $50/mo)
|
|
693
|
+
|
|
694
|
+
---
|
|
695
|
+
|
|
696
|
+
## Part 8: Granular vs. Global Authorization
|
|
697
|
+
|
|
698
|
+
### The User's Question
|
|
699
|
+
|
|
700
|
+
> "Wonder if having it global is ok but making it more granular would work too."
|
|
701
|
+
|
|
702
|
+
**Interpretation:** Should authorization be:
|
|
703
|
+
- **Global:** Agent-level (current model)
|
|
704
|
+
- **Granular:** Skill-level, tool-level, or context-level
|
|
705
|
+
|
|
706
|
+
### Analysis: What "Granular" Could Mean
|
|
707
|
+
|
|
708
|
+
#### Option 1: Per-Skill Policies
|
|
709
|
+
|
|
710
|
+
**Model:**
|
|
711
|
+
```yaml
|
|
712
|
+
# Passport
|
|
713
|
+
limits:
|
|
714
|
+
git-skill:
|
|
715
|
+
allowed_commands: ["git status", "git log"]
|
|
716
|
+
shell-skill:
|
|
717
|
+
allowed_commands: ["ls", "cat"]
|
|
718
|
+
```
|
|
719
|
+
|
|
720
|
+
**Enforcement:**
|
|
721
|
+
- Before tool call, check which skill invoked it
|
|
722
|
+
- Apply skill-specific limits
|
|
723
|
+
|
|
724
|
+
**Pros:**
|
|
725
|
+
- More precise control
|
|
726
|
+
- Skills can't exceed their grants
|
|
727
|
+
|
|
728
|
+
**Cons:**
|
|
729
|
+
- ❌ **Bypassable:** Malicious skill lies about its name
|
|
730
|
+
- ❌ **Complex:** Need skill → tool call tracing
|
|
731
|
+
- ❌ **Wrong boundary:** Skills are code, not security principals
|
|
732
|
+
- ❌ **Maintenance:** Update limits per-skill (scales poorly)
|
|
733
|
+
|
|
734
|
+
**Verdict: No. Skills should not be security principals.**
|
|
735
|
+
|
|
736
|
+
#### Option 2: Tool-Level Policies (Current Model)
|
|
737
|
+
|
|
738
|
+
**Model:**
|
|
739
|
+
```json
|
|
740
|
+
// Passport
|
|
741
|
+
{
|
|
742
|
+
"limits": {
|
|
743
|
+
"system.command.execute": {
|
|
744
|
+
"allowed_commands": ["git", "npm", "ls"]
|
|
745
|
+
},
|
|
746
|
+
"messaging.message.send": {
|
|
747
|
+
"allowed_channels": ["slack"]
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
```
|
|
752
|
+
|
|
753
|
+
**Enforcement:**
|
|
754
|
+
- Before `exec.run` → check `system.command.execute` limits
|
|
755
|
+
- Before `messaging.send` → check `messaging.message.send` limits
|
|
756
|
+
|
|
757
|
+
**Pros:**
|
|
758
|
+
- ✅ Correct security boundary (tools, not skills)
|
|
759
|
+
- ✅ Cannot be bypassed (platform enforces)
|
|
760
|
+
- ✅ Scales well (limits per capability)
|
|
761
|
+
|
|
762
|
+
**Verdict: Yes. This is current model. Keep it.**
|
|
763
|
+
|
|
764
|
+
#### Option 3: Context-Aware Policies
|
|
765
|
+
|
|
766
|
+
**Model:**
|
|
767
|
+
```json
|
|
768
|
+
// Policy pack evaluation rules
|
|
769
|
+
{
|
|
770
|
+
"conditions": [
|
|
771
|
+
{
|
|
772
|
+
"field": "context.user_approved",
|
|
773
|
+
"operator": "equals",
|
|
774
|
+
"value": true
|
|
775
|
+
},
|
|
776
|
+
{
|
|
777
|
+
"field": "context.command",
|
|
778
|
+
"operator": "matches",
|
|
779
|
+
"value": "^git (status|log)"
|
|
780
|
+
}
|
|
781
|
+
]
|
|
782
|
+
}
|
|
783
|
+
```
|
|
784
|
+
|
|
785
|
+
**Enforcement:**
|
|
786
|
+
- Evaluator considers context (user approval, time of day, command content)
|
|
787
|
+
- Dynamic decisions based on runtime context
|
|
788
|
+
|
|
789
|
+
**Pros:**
|
|
790
|
+
- ✅ Flexible (handles complex cases)
|
|
791
|
+
- ✅ Enterprise use cases (approval flows, time-based, etc.)
|
|
792
|
+
- ✅ Already supported by OAP (evaluation rules)
|
|
793
|
+
|
|
794
|
+
**Verdict: Yes. This is "granular" done right.**
|
|
795
|
+
|
|
796
|
+
### What "Granular" Should Mean
|
|
797
|
+
|
|
798
|
+
**Granular = context-aware policies, NOT per-skill policies.**
|
|
799
|
+
|
|
800
|
+
**Good granularity:**
|
|
801
|
+
- ✅ Time-based: "Allow git push only 9-5 EST"
|
|
802
|
+
- ✅ Approval-required: "Block `rm -rf` unless user approves"
|
|
803
|
+
- ✅ Content-based: "Block commands with `/etc/passwd`"
|
|
804
|
+
- ✅ Threshold-based: "Allow 10 API calls/hour max"
|
|
805
|
+
|
|
806
|
+
**Bad granularity:**
|
|
807
|
+
- ❌ Per-skill: "git-skill can run these commands"
|
|
808
|
+
- ❌ Per-author: "Trust skills from @foo"
|
|
809
|
+
- ❌ Opt-in: "Skills without metadata are unprotected"
|
|
810
|
+
|
|
811
|
+
**Current APort model already supports good granularity** via policy pack evaluation rules.
|
|
812
|
+
|
|
813
|
+
---
|
|
814
|
+
|
|
815
|
+
## Part 9: Risk Analysis
|
|
816
|
+
|
|
817
|
+
### Risks of Skills Strategy
|
|
818
|
+
|
|
819
|
+
**Risk 1: Users expect per-skill opt-in**
|
|
820
|
+
|
|
821
|
+
**Scenario:** User installs APort, then installs skill, expects to "enable APort for this skill"
|
|
822
|
+
|
|
823
|
+
**Mitigation:**
|
|
824
|
+
- Clear messaging: "APort protects ALL tools automatically"
|
|
825
|
+
- Documentation: "No per-skill configuration needed"
|
|
826
|
+
- UX: Installation flow doesn't ask about per-skill settings
|
|
827
|
+
|
|
828
|
+
**Likelihood:** Medium (users used to per-app permissions on mobile)
|
|
829
|
+
|
|
830
|
+
**Impact:** Low (education fixes this)
|
|
831
|
+
|
|
832
|
+
**Risk 2: Skills marketplace rejects APort**
|
|
833
|
+
|
|
834
|
+
**Scenario:** ClawHub/Skills.sh reject submission (too meta, not a real skill, etc.)
|
|
835
|
+
|
|
836
|
+
**Mitigation:**
|
|
837
|
+
- Frame as "security infrastructure skill"
|
|
838
|
+
- Show precedent (antivirus-like tools)
|
|
839
|
+
- Highlight: 7.1% malicious skills = clear need
|
|
840
|
+
|
|
841
|
+
**Likelihood:** Low (security is obvious need post-Cisco disclosure)
|
|
842
|
+
|
|
843
|
+
**Impact:** Medium (lose distribution channel)
|
|
844
|
+
|
|
845
|
+
**Risk 3: Gen partnership becomes competitive**
|
|
846
|
+
|
|
847
|
+
**Scenario:** Gen (Skills.sh security partner) builds authorization layer
|
|
848
|
+
|
|
849
|
+
**Mitigation:**
|
|
850
|
+
- APort is enforcement, Gen is scanning (different layers)
|
|
851
|
+
- Partner: "Gen detects, APort blocks"
|
|
852
|
+
- Open-source advantage (Gen likely proprietary)
|
|
853
|
+
|
|
854
|
+
**Likelihood:** Medium (they might expand scope)
|
|
855
|
+
|
|
856
|
+
**Impact:** High (direct competition)
|
|
857
|
+
|
|
858
|
+
**Risk 4: Per-skill auth becomes user expectation**
|
|
859
|
+
|
|
860
|
+
**Scenario:** Users expect fine-grained per-skill control, APort's global model feels too coarse
|
|
861
|
+
|
|
862
|
+
**Mitigation:**
|
|
863
|
+
- Educate: "Global enforcement is security best practice"
|
|
864
|
+
- Provide granularity via context-aware policies (not per-skill)
|
|
865
|
+
- Show: "You can restrict commands via passport limits"
|
|
866
|
+
|
|
867
|
+
**Likelihood:** Low (enterprises understand global is correct)
|
|
868
|
+
|
|
869
|
+
**Impact:** Medium (UX confusion)
|
|
870
|
+
|
|
871
|
+
### Opportunities
|
|
872
|
+
|
|
873
|
+
**Opportunity 1: "Install first" becomes best practice**
|
|
874
|
+
|
|
875
|
+
**Scenario:** OpenClaw docs recommend "Install APort before installing skills"
|
|
876
|
+
|
|
877
|
+
**Action:**
|
|
878
|
+
- PR to OpenClaw docs (security best practices)
|
|
879
|
+
- Reach out to OpenClaw team
|
|
880
|
+
- Show: 7.1% malicious skills = need protection
|
|
881
|
+
|
|
882
|
+
**Value:** Massive (default recommendation = huge adoption)
|
|
883
|
+
|
|
884
|
+
**Opportunity 2: ClawHub featured/verified badge**
|
|
885
|
+
|
|
886
|
+
**Scenario:** ClawHub adds "security verified" or "featured" badge, APort gets it
|
|
887
|
+
|
|
888
|
+
**Action:**
|
|
889
|
+
- Apply for verification program
|
|
890
|
+
- Submit security audit results
|
|
891
|
+
- Highlight: VirusTotal scanning now exists (Feb 2026)
|
|
892
|
+
|
|
893
|
+
**Value:** High (credibility + visibility)
|
|
894
|
+
|
|
895
|
+
**Opportunity 3: Gen partnership**
|
|
896
|
+
|
|
897
|
+
**Scenario:** Gen refers users to APort for enforcement
|
|
898
|
+
|
|
899
|
+
**Action:**
|
|
900
|
+
- Reach out to Gen partnership team
|
|
901
|
+
- Propose: "Gen Trust Hub scans → recommend APort for enforcement"
|
|
902
|
+
- Co-marketing
|
|
903
|
+
|
|
904
|
+
**Value:** Very High (access to their user base)
|
|
905
|
+
|
|
906
|
+
---
|
|
907
|
+
|
|
908
|
+
## Part 10: Recommendations
|
|
909
|
+
|
|
910
|
+
### Priority 1: Publish to Skill Marketplaces (HIGH IMPACT)
|
|
911
|
+
|
|
912
|
+
**Action items:**
|
|
913
|
+
|
|
914
|
+
1. **ClawHub submission** (This week)
|
|
915
|
+
- Submit `skills/aport-agent-guardrail/SKILL.md`
|
|
916
|
+
- Category: Security / Infrastructure
|
|
917
|
+
- Description: "Install before any skills to protect your agent"
|
|
918
|
+
- Target: Top 10 security skills
|
|
919
|
+
|
|
920
|
+
2. **Skills.sh submission** (This week)
|
|
921
|
+
- Package: `@aporthq/aport-agent-guardrails`
|
|
922
|
+
- Update npm package description for Skills.sh
|
|
923
|
+
- Target: Top 20 overall
|
|
924
|
+
|
|
925
|
+
3. **Awesome lists PRs** (This week)
|
|
926
|
+
- VoltAgent/awesome-openclaw-skills
|
|
927
|
+
- e2b-dev/awesome-ai-agents
|
|
928
|
+
- Jenqyang/Awesome-AI-Agents
|
|
929
|
+
|
|
930
|
+
**Expected outcome:**
|
|
931
|
+
- 1,000+ installs in first month
|
|
932
|
+
- Top 10 security skill on ClawHub
|
|
933
|
+
- Visibility to 100K+ developers
|
|
934
|
+
|
|
935
|
+
### Priority 2: Position as "Install First" Skill (HIGH IMPACT)
|
|
936
|
+
|
|
937
|
+
**Messaging:**
|
|
938
|
+
|
|
939
|
+
**Tagline:** "Install APort before any skills to protect your agent."
|
|
940
|
+
|
|
941
|
+
**Narrative:**
|
|
942
|
+
> "283 malicious skills found on ClawHub (7.1% infection rate). Data exfiltration, unauthorized commands, and prompt injection are real threats. Install APort guardrails first, then install skills safely with pre-action authorization."
|
|
943
|
+
|
|
944
|
+
**CTA:**
|
|
945
|
+
```bash
|
|
946
|
+
# Step 1: Protect your agent
|
|
947
|
+
npx @aporthq/aport-agent-guardrails
|
|
948
|
+
|
|
949
|
+
# Step 2: Install skills safely
|
|
950
|
+
openclaw skills install <any-skill>
|
|
951
|
+
```
|
|
952
|
+
|
|
953
|
+
**Where to use:**
|
|
954
|
+
- Skill marketplace descriptions
|
|
955
|
+
- README.md (aport-agent-guardrails repo)
|
|
956
|
+
- Website (aport.io)
|
|
957
|
+
- Launch posts
|
|
958
|
+
|
|
959
|
+
### Priority 3: Do NOT Build Per-Skill Authorization (LOW PRIORITY)
|
|
960
|
+
|
|
961
|
+
**Don't do:**
|
|
962
|
+
- ❌ Per-skill metadata for authorization
|
|
963
|
+
- ❌ "Skills declare agent_id"
|
|
964
|
+
- ❌ Opt-in authorization model
|
|
965
|
+
|
|
966
|
+
**Reasoning:**
|
|
967
|
+
- Breaks security model (bypassable)
|
|
968
|
+
- Wrong trust boundary
|
|
969
|
+
- Doesn't stop malicious skills
|
|
970
|
+
|
|
971
|
+
**Keep:**
|
|
972
|
+
- ✅ Global enforcement (platform plugin)
|
|
973
|
+
- ✅ Tool-level policies (current model)
|
|
974
|
+
- ✅ Context-aware granularity (evaluation rules)
|
|
975
|
+
|
|
976
|
+
### Priority 4: Partner with Gen (MEDIUM IMPACT)
|
|
977
|
+
|
|
978
|
+
**Action:**
|
|
979
|
+
- Reach out to Gen partnership team
|
|
980
|
+
- Propose: "Gen scans, APort enforces"
|
|
981
|
+
- Co-marketing opportunity
|
|
982
|
+
|
|
983
|
+
**Email template:**
|
|
984
|
+
```
|
|
985
|
+
Subject: Partnership: Gen Trust Hub + APort Enforcement
|
|
986
|
+
|
|
987
|
+
Hi Gen team,
|
|
988
|
+
|
|
989
|
+
Congrats on the Skills.sh partnership (Feb 17)!
|
|
990
|
+
|
|
991
|
+
I'm building APort — pre-action authorization for AI agents. We're complementary:
|
|
992
|
+
- Gen: Threat scanning (detect malicious skills)
|
|
993
|
+
- APort: Enforcement (block unauthorized actions)
|
|
994
|
+
|
|
995
|
+
Idea: When Gen flags a threat, recommend APort for enforcement layer.
|
|
996
|
+
|
|
997
|
+
Would you be open to a call?
|
|
998
|
+
|
|
999
|
+
Best,
|
|
1000
|
+
Uchi
|
|
1001
|
+
aport.io | github.com/aporthq/aport-agent-guardrails
|
|
1002
|
+
```
|
|
1003
|
+
|
|
1004
|
+
### Priority 5: OpenClaw Documentation PR (MEDIUM IMPACT)
|
|
1005
|
+
|
|
1006
|
+
**Action:**
|
|
1007
|
+
- PR to OpenClaw docs
|
|
1008
|
+
- Section: "Security Best Practices"
|
|
1009
|
+
- Content: "Install APort before skills to protect your agent"
|
|
1010
|
+
|
|
1011
|
+
**Outcome:**
|
|
1012
|
+
- Official endorsement
|
|
1013
|
+
- Default recommendation
|
|
1014
|
+
- Huge credibility boost
|
|
1015
|
+
|
|
1016
|
+
---
|
|
1017
|
+
|
|
1018
|
+
## Part 11: Comparison with Framework Support Plan
|
|
1019
|
+
|
|
1020
|
+
### From `/Users/uchi/Downloads/projects/aport-agent-guardrails/docs/launch/FRAMEWORK_SUPPORT_PLAN.md`
|
|
1021
|
+
|
|
1022
|
+
**Current priorities:**
|
|
1023
|
+
1. ✅ OpenClaw (shipped)
|
|
1024
|
+
2. 🎯 LangChain (next)
|
|
1025
|
+
3. 🎯 Cursor (next)
|
|
1026
|
+
4. 🎯 CrewAI (next)
|
|
1027
|
+
|
|
1028
|
+
**How skills fit in:**
|
|
1029
|
+
|
|
1030
|
+
**Skills are a DISTRIBUTION channel for ALL frameworks.**
|
|
1031
|
+
|
|
1032
|
+
```
|
|
1033
|
+
User finds APort on ClawHub (OpenClaw)
|
|
1034
|
+
↓
|
|
1035
|
+
Installs: npx @aporthq/aport-agent-guardrails
|
|
1036
|
+
↓
|
|
1037
|
+
Installer asks: Which framework?
|
|
1038
|
+
↓
|
|
1039
|
+
User chooses: OpenClaw, LangChain, Cursor, etc.
|
|
1040
|
+
↓
|
|
1041
|
+
Framework-specific setup runs
|
|
1042
|
+
```
|
|
1043
|
+
|
|
1044
|
+
**Skills → Framework dispatcher → Multi-framework support**
|
|
1045
|
+
|
|
1046
|
+
**This is brilliant because:**
|
|
1047
|
+
- ✅ Skills.sh/ClawHub = discovery
|
|
1048
|
+
- ✅ `npx @aporthq/aport-agent-guardrails` = unified installer
|
|
1049
|
+
- ✅ Framework detection = works for any platform
|
|
1050
|
+
- ✅ "Install first" = applies to all frameworks
|
|
1051
|
+
|
|
1052
|
+
**Skills accelerate ALL framework integrations, not just OpenClaw.**
|
|
1053
|
+
|
|
1054
|
+
### Updated Priorities
|
|
1055
|
+
|
|
1056
|
+
**Week 1-2 (Current):**
|
|
1057
|
+
- ✅ Ship SHIELD integration
|
|
1058
|
+
- 🆕 **Publish to ClawHub + Skills.sh**
|
|
1059
|
+
- 🆕 **PR to awesome lists**
|
|
1060
|
+
|
|
1061
|
+
**Week 3-4:**
|
|
1062
|
+
- Ship LangChain integration
|
|
1063
|
+
- Get to 1,000 installs (Skills.sh helps)
|
|
1064
|
+
|
|
1065
|
+
**Week 5-8:**
|
|
1066
|
+
- Ship CrewAI, Cursor integrations
|
|
1067
|
+
- 10,000 installs (ClawHub + Skills.sh combined)
|
|
1068
|
+
|
|
1069
|
+
**Skills distribution helps hit ALL framework targets faster.**
|
|
1070
|
+
|
|
1071
|
+
---
|
|
1072
|
+
|
|
1073
|
+
## Part 12: Final Verdict
|
|
1074
|
+
|
|
1075
|
+
### Should APort Target Skills? YES.
|
|
1076
|
+
|
|
1077
|
+
**But not in the way you initially proposed.**
|
|
1078
|
+
|
|
1079
|
+
### What TO DO
|
|
1080
|
+
|
|
1081
|
+
✅ **1. Publish existing skill to marketplaces**
|
|
1082
|
+
- ClawHub (OpenClaw)
|
|
1083
|
+
- Skills.sh (Vercel)
|
|
1084
|
+
- Awesome lists
|
|
1085
|
+
|
|
1086
|
+
✅ **2. Position as "install first" meta-skill**
|
|
1087
|
+
- "Protect your agent before installing skills"
|
|
1088
|
+
- Leverage 7.1% malicious skill statistic
|
|
1089
|
+
- Security wedge
|
|
1090
|
+
|
|
1091
|
+
✅ **3. Keep global enforcement model**
|
|
1092
|
+
- Platform-level hooks (before_tool_call)
|
|
1093
|
+
- Cannot be bypassed
|
|
1094
|
+
- Tool-level policies (current model)
|
|
1095
|
+
|
|
1096
|
+
✅ **4. Partner with Gen**
|
|
1097
|
+
- Gen scans, APort enforces
|
|
1098
|
+
- Complementary, not competitive
|
|
1099
|
+
- Co-marketing
|
|
1100
|
+
|
|
1101
|
+
✅ **5. OpenClaw docs PR**
|
|
1102
|
+
- Security best practices section
|
|
1103
|
+
- Official recommendation
|
|
1104
|
+
|
|
1105
|
+
### What NOT TO DO
|
|
1106
|
+
|
|
1107
|
+
❌ **1. Per-skill authorization metadata**
|
|
1108
|
+
- Breaks security model
|
|
1109
|
+
- Bypassable
|
|
1110
|
+
- Wrong trust boundary
|
|
1111
|
+
|
|
1112
|
+
❌ **2. Opt-in enforcement**
|
|
1113
|
+
- Skills without metadata unprotected
|
|
1114
|
+
- Doesn't stop malicious skills
|
|
1115
|
+
|
|
1116
|
+
❌ **3. Build skill-specific policies**
|
|
1117
|
+
- Wrong granularity
|
|
1118
|
+
- Use context-aware policies instead
|
|
1119
|
+
|
|
1120
|
+
### Expected Impact
|
|
1121
|
+
|
|
1122
|
+
**If executed well:**
|
|
1123
|
+
- **Month 1:** 1,000-5,000 installs
|
|
1124
|
+
- **Month 3:** 10,000+ installs
|
|
1125
|
+
- **Month 6:** Top 10 security skill on ClawHub
|
|
1126
|
+
- **Month 12:** 50,000+ installs, referenced in OpenClaw docs
|
|
1127
|
+
|
|
1128
|
+
**Skills are the DISTRIBUTION LAYER for APort.**
|
|
1129
|
+
|
|
1130
|
+
**Not the ARCHITECTURE LAYER.**
|
|
1131
|
+
|
|
1132
|
+
---
|
|
1133
|
+
|
|
1134
|
+
## Appendix A: Skills.sh Specifics
|
|
1135
|
+
|
|
1136
|
+
### How to Publish to Skills.sh
|
|
1137
|
+
|
|
1138
|
+
**Format:** npm package with specific structure
|
|
1139
|
+
|
|
1140
|
+
**Requirements:**
|
|
1141
|
+
1. npm package published
|
|
1142
|
+
2. README.md with usage
|
|
1143
|
+
3. Install: `npx skills add <package>`
|
|
1144
|
+
|
|
1145
|
+
**Your package already meets requirements:**
|
|
1146
|
+
- ✅ `@aporthq/aport-agent-guardrails` on npm
|
|
1147
|
+
- ✅ README.md exists
|
|
1148
|
+
- ✅ `npx @aporthq/aport-agent-guardrails` works
|
|
1149
|
+
|
|
1150
|
+
**Action:** Submit to Skills.sh registry (if submission process exists)
|
|
1151
|
+
|
|
1152
|
+
### Competition: Gen Partnership
|
|
1153
|
+
|
|
1154
|
+
**Gen + Vercel (Feb 17, 2026):**
|
|
1155
|
+
- Agent Trust Hub
|
|
1156
|
+
- Security verification
|
|
1157
|
+
- Risk ratings for skills
|
|
1158
|
+
|
|
1159
|
+
**How APort is different:**
|
|
1160
|
+
- **Gen:** Scans skills for threats (static analysis, behavioral)
|
|
1161
|
+
- **APort:** Enforces pre-action authorization (runtime)
|
|
1162
|
+
- **Gen:** "Is this skill malicious?"
|
|
1163
|
+
- **APort:** "Can this agent run this command?"
|
|
1164
|
+
|
|
1165
|
+
**Complementary layers:**
|
|
1166
|
+
1. Gen scans skill → flags threat
|
|
1167
|
+
2. User installs skill anyway (trusts it)
|
|
1168
|
+
3. Skill tries to run malicious command
|
|
1169
|
+
4. APort blocks (pre-action authorization)
|
|
1170
|
+
|
|
1171
|
+
**Both needed. Not competitive.**
|
|
1172
|
+
|
|
1173
|
+
---
|
|
1174
|
+
|
|
1175
|
+
## Appendix B: Implementation Checklist
|
|
1176
|
+
|
|
1177
|
+
### This Week (Feb 17-24)
|
|
1178
|
+
|
|
1179
|
+
- [ ] **ClawHub submission**
|
|
1180
|
+
- File: `skills/aport-agent-guardrail/SKILL.md` (already exists)
|
|
1181
|
+
- Action: Submit via OpenClaw CLI or web form
|
|
1182
|
+
- Target: Security category
|
|
1183
|
+
|
|
1184
|
+
- [ ] **Skills.sh listing**
|
|
1185
|
+
- Package: `@aporthq/aport-agent-guardrails` (already published)
|
|
1186
|
+
- Action: Ensure listed on skills.sh
|
|
1187
|
+
- Update: npm description for Skills.sh SEO
|
|
1188
|
+
|
|
1189
|
+
- [ ] **Awesome lists PRs**
|
|
1190
|
+
- VoltAgent/awesome-openclaw-skills (Security & Passwords)
|
|
1191
|
+
- e2b-dev/awesome-ai-agents
|
|
1192
|
+
- Jenqyang/Awesome-AI-Agents
|
|
1193
|
+
|
|
1194
|
+
- [ ] **Update messaging**
|
|
1195
|
+
- README.md: Add "install first" language
|
|
1196
|
+
- Website: Add ClawHub link
|
|
1197
|
+
- Social: "7.1% malicious skills" tweet
|
|
1198
|
+
|
|
1199
|
+
### Next 2 Weeks (Feb 25 - Mar 10)
|
|
1200
|
+
|
|
1201
|
+
- [ ] **Gen partnership outreach**
|
|
1202
|
+
- Email Gen team
|
|
1203
|
+
- Propose co-marketing
|
|
1204
|
+
- "Gen scans, APort enforces"
|
|
1205
|
+
|
|
1206
|
+
- [ ] **OpenClaw docs PR**
|
|
1207
|
+
- Security best practices section
|
|
1208
|
+
- Link to APort skill
|
|
1209
|
+
- Position as recommended security layer
|
|
1210
|
+
|
|
1211
|
+
- [ ] **Monitor installs**
|
|
1212
|
+
- Track npm downloads
|
|
1213
|
+
- Track ClawHub installs (if metrics available)
|
|
1214
|
+
- Target: 1,000 installs
|
|
1215
|
+
|
|
1216
|
+
### Month 2-3 (Mar - Apr)
|
|
1217
|
+
|
|
1218
|
+
- [ ] **Case studies**
|
|
1219
|
+
- "How APort blocked malicious ClawHub skill"
|
|
1220
|
+
- Real examples from users
|
|
1221
|
+
- Publish to blog + HN
|
|
1222
|
+
|
|
1223
|
+
- [ ] **Feature in security roundups**
|
|
1224
|
+
- Reach out to security researchers
|
|
1225
|
+
- Snyk, Cisco authors
|
|
1226
|
+
- "Tools to protect against malicious skills"
|
|
1227
|
+
|
|
1228
|
+
---
|
|
1229
|
+
|
|
1230
|
+
## Conclusion
|
|
1231
|
+
|
|
1232
|
+
**Skills are a HUGE opportunity for APort distribution.**
|
|
1233
|
+
|
|
1234
|
+
**But the model is:**
|
|
1235
|
+
- ✅ Skills = distribution channel (ClawHub, Skills.sh)
|
|
1236
|
+
- ✅ APort skill = installer/enforcer (global)
|
|
1237
|
+
- ❌ NOT per-skill authorization (breaks security)
|
|
1238
|
+
|
|
1239
|
+
**Action plan:**
|
|
1240
|
+
1. Publish to ClawHub + Skills.sh (this week)
|
|
1241
|
+
2. Position as "install first" (immediate)
|
|
1242
|
+
3. Partner with Gen (reach out)
|
|
1243
|
+
4. OpenClaw docs PR (this month)
|
|
1244
|
+
|
|
1245
|
+
**Expected outcome:**
|
|
1246
|
+
- 10K+ installs in 3 months
|
|
1247
|
+
- Top 10 security skill
|
|
1248
|
+
- Referenced in security guides
|
|
1249
|
+
|
|
1250
|
+
**Skills are NOT the product. They're the DISTRIBUTION LAYER for the product.**
|
|
1251
|
+
|
|
1252
|
+
**Ship it.**
|
|
1253
|
+
|
|
1254
|
+
---
|
|
1255
|
+
|
|
1256
|
+
**Confidence: 8/10**
|
|
1257
|
+
|
|
1258
|
+
**The only reason it's not 10/10:** Gen partnership might become competitive (unknown). But even without Gen, ClawHub + Skills.sh distribution is worth it.
|
|
1259
|
+
|
|
1260
|
+
**Bottom line: Publish to skill marketplaces. Don't build per-skill auth.**
|