openclaw-node-harness 2.0.0
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 +21 -0
- package/README.md +184 -0
- package/bin/discord-read.js +228 -0
- package/bin/fleet-deploy.js +365 -0
- package/bin/lane-watchdog.js +232 -0
- package/bin/mesh-agent.js +714 -0
- package/bin/mesh-bridge.js +535 -0
- package/bin/mesh-deploy-listener.js +322 -0
- package/bin/mesh-deploy.js +1048 -0
- package/bin/mesh-health-publisher.js +247 -0
- package/bin/mesh-task-daemon.js +451 -0
- package/bin/mesh-tool-discord.js +293 -0
- package/bin/mesh.js +649 -0
- package/boot/manifest.yaml +187 -0
- package/cli.js +35 -0
- package/config/daemon.json.template +16 -0
- package/config/obsidian-sync.json.template +39 -0
- package/config/openclaw.json.template +124 -0
- package/config/transcript-sources.json.template +22 -0
- package/identity/AGENTS.md +201 -0
- package/identity/CLAUDE.md +64 -0
- package/identity/DELEGATION.md +304 -0
- package/identity/HEARTBEAT.md +163 -0
- package/identity/MEMORY_SPEC.md +368 -0
- package/identity/PRINCIPLES.md +81 -0
- package/identity/SOUL.md +48 -0
- package/identity/TOOLS.md +47 -0
- package/install.sh +895 -0
- package/lib/agent-activity.js +390 -0
- package/lib/kanban-io.js +352 -0
- package/lib/mesh-registry.js +194 -0
- package/lib/mesh-roles.js +13 -0
- package/lib/mesh-tasks.js +306 -0
- package/lib/nats-resolve.js +108 -0
- package/mission-control/README.md +36 -0
- package/mission-control/drizzle/0000_simple_silhouette.sql +62 -0
- package/mission-control/drizzle/meta/0000_snapshot.json +413 -0
- package/mission-control/drizzle/meta/_journal.json +13 -0
- package/mission-control/drizzle.config.ts +13 -0
- package/mission-control/eslint.config.mjs +18 -0
- package/mission-control/next.config.ts +7 -0
- package/mission-control/package-lock.json +10518 -0
- package/mission-control/package.json +49 -0
- package/mission-control/postcss.config.mjs +7 -0
- package/mission-control/public/file.svg +1 -0
- package/mission-control/public/globe.svg +1 -0
- package/mission-control/public/next.svg +1 -0
- package/mission-control/public/vercel.svg +1 -0
- package/mission-control/public/window.svg +1 -0
- package/mission-control/scripts/enrich-descriptions.js +193 -0
- package/mission-control/scripts/gen-chronology.js +102 -0
- package/mission-control/scripts/import-pipeline-v2.js +523 -0
- package/mission-control/scripts/import-pipeline.js +295 -0
- package/mission-control/src/app/api/activity/live/route.ts +27 -0
- package/mission-control/src/app/api/activity/route.ts +47 -0
- package/mission-control/src/app/api/burndown/route.ts +112 -0
- package/mission-control/src/app/api/critical-path/route.ts +159 -0
- package/mission-control/src/app/api/dependencies/route.ts +176 -0
- package/mission-control/src/app/api/memory/categories/route.ts +93 -0
- package/mission-control/src/app/api/memory/consolidate/route.ts +107 -0
- package/mission-control/src/app/api/memory/doc/route.ts +89 -0
- package/mission-control/src/app/api/memory/flush/route.ts +129 -0
- package/mission-control/src/app/api/memory/graph/route.ts +105 -0
- package/mission-control/src/app/api/memory/items/route.ts +86 -0
- package/mission-control/src/app/api/memory/list/route.ts +48 -0
- package/mission-control/src/app/api/memory/retrieve/route.ts +51 -0
- package/mission-control/src/app/api/memory/search/route.ts +143 -0
- package/mission-control/src/app/api/memory/sync/route.ts +23 -0
- package/mission-control/src/app/api/memory/wikilinks/route.ts +75 -0
- package/mission-control/src/app/api/mesh/events/route.ts +67 -0
- package/mission-control/src/app/api/mesh/nodes/route.ts +221 -0
- package/mission-control/src/app/api/mesh/tokens/route.ts +133 -0
- package/mission-control/src/app/api/projects/route.ts +102 -0
- package/mission-control/src/app/api/resolve-path/route.ts +92 -0
- package/mission-control/src/app/api/scheduler/tick/route.ts +38 -0
- package/mission-control/src/app/api/scheduler/waves/route.ts +54 -0
- package/mission-control/src/app/api/screenshot/route.ts +127 -0
- package/mission-control/src/app/api/settings/gateway/route.ts +92 -0
- package/mission-control/src/app/api/skills/[id]/health/route.ts +57 -0
- package/mission-control/src/app/api/skills/list/route.ts +41 -0
- package/mission-control/src/app/api/souls/[id]/evolution/route.ts +253 -0
- package/mission-control/src/app/api/souls/[id]/prompt/route.ts +205 -0
- package/mission-control/src/app/api/souls/[id]/propagate/route.ts +146 -0
- package/mission-control/src/app/api/souls/route.ts +174 -0
- package/mission-control/src/app/api/tasks/[id]/handoff/route.ts +115 -0
- package/mission-control/src/app/api/tasks/[id]/route.ts +266 -0
- package/mission-control/src/app/api/tasks/[id]/tree/route.ts +94 -0
- package/mission-control/src/app/api/tasks/route.ts +253 -0
- package/mission-control/src/app/api/tts/route.ts +47 -0
- package/mission-control/src/app/api/workspace/files/route.ts +88 -0
- package/mission-control/src/app/api/workspace/read/route.ts +73 -0
- package/mission-control/src/app/burndown/page.tsx +309 -0
- package/mission-control/src/app/calendar/page.tsx +839 -0
- package/mission-control/src/app/favicon.ico +0 -0
- package/mission-control/src/app/globals.css +67 -0
- package/mission-control/src/app/graph/page.tsx +352 -0
- package/mission-control/src/app/layout.tsx +35 -0
- package/mission-control/src/app/live/page.tsx +232 -0
- package/mission-control/src/app/memory/page.tsx +154 -0
- package/mission-control/src/app/mesh/page.tsx +457 -0
- package/mission-control/src/app/obsidian/page.tsx +252 -0
- package/mission-control/src/app/page.tsx +70 -0
- package/mission-control/src/app/roadmap/page.tsx +1757 -0
- package/mission-control/src/app/settings/page.tsx +260 -0
- package/mission-control/src/app/souls/page.tsx +573 -0
- package/mission-control/src/components/board/activity-timeline.tsx +96 -0
- package/mission-control/src/components/board/daily-board.tsx +373 -0
- package/mission-control/src/components/board/kanban-board.tsx +364 -0
- package/mission-control/src/components/board/kanban-column.tsx +105 -0
- package/mission-control/src/components/board/live-stream.tsx +116 -0
- package/mission-control/src/components/board/skill-health-card.tsx +128 -0
- package/mission-control/src/components/board/status-banner.tsx +124 -0
- package/mission-control/src/components/board/task-card.tsx +454 -0
- package/mission-control/src/components/board/unified-task-dialog.tsx +1043 -0
- package/mission-control/src/components/layout/resizable-layout.tsx +68 -0
- package/mission-control/src/components/layout/sidebar.tsx +90 -0
- package/mission-control/src/components/live/audio-spectrum.tsx +106 -0
- package/mission-control/src/components/live/chat-bubble.tsx +52 -0
- package/mission-control/src/components/live/chat-input.tsx +92 -0
- package/mission-control/src/components/memory/doc-reader.tsx +172 -0
- package/mission-control/src/components/memory/memory-list.tsx +169 -0
- package/mission-control/src/components/memory/search-bar.tsx +67 -0
- package/mission-control/src/components/memory/search-results.tsx +149 -0
- package/mission-control/src/components/obsidian/backlinks-panel.tsx +52 -0
- package/mission-control/src/components/obsidian/file-tree.tsx +186 -0
- package/mission-control/src/components/obsidian/local-graph.tsx +107 -0
- package/mission-control/src/components/obsidian/obsidian-graph.tsx +192 -0
- package/mission-control/src/components/obsidian/obsidian-reader.tsx +246 -0
- package/mission-control/src/lib/activity.ts +29 -0
- package/mission-control/src/lib/config.ts +21 -0
- package/mission-control/src/lib/db/index.ts +429 -0
- package/mission-control/src/lib/db/schema.ts +218 -0
- package/mission-control/src/lib/gateway-notify.ts +113 -0
- package/mission-control/src/lib/hooks.ts +536 -0
- package/mission-control/src/lib/memory/categories.ts +125 -0
- package/mission-control/src/lib/memory/entities.ts +482 -0
- package/mission-control/src/lib/memory/extract.ts +369 -0
- package/mission-control/src/lib/memory/retrieval.ts +281 -0
- package/mission-control/src/lib/memory/wikilinks.ts +147 -0
- package/mission-control/src/lib/nats.ts +126 -0
- package/mission-control/src/lib/parsers/clawvault-doc.ts +98 -0
- package/mission-control/src/lib/parsers/daily-log.ts +73 -0
- package/mission-control/src/lib/parsers/memory-md.ts +81 -0
- package/mission-control/src/lib/parsers/task-markdown.ts +459 -0
- package/mission-control/src/lib/parsers/transcript.ts +209 -0
- package/mission-control/src/lib/scheduler.ts +394 -0
- package/mission-control/src/lib/speech/use-speech-pipeline.ts +176 -0
- package/mission-control/src/lib/sync/memory.ts +224 -0
- package/mission-control/src/lib/sync/tasks.ts +271 -0
- package/mission-control/src/lib/tts/edge.ts +31 -0
- package/mission-control/src/lib/tts/google.ts +78 -0
- package/mission-control/src/lib/tts/index.ts +39 -0
- package/mission-control/src/lib/tts/types.ts +18 -0
- package/mission-control/tsconfig.json +42 -0
- package/obsidian-vault/.obsidian/app.json +10 -0
- package/obsidian-vault/.obsidian/community-plugins.json +8 -0
- package/obsidian-vault/.obsidian/graph.json +40 -0
- package/obsidian-vault/.obsidian/plugins/obsidian-local-rest-api/main.js +58769 -0
- package/obsidian-vault/.obsidian/plugins/obsidian-local-rest-api/manifest.json +10 -0
- package/obsidian-vault/.obsidian/plugins/obsidian-local-rest-api/styles.css +47 -0
- package/obsidian-vault/00-meta/.gitkeep +0 -0
- package/obsidian-vault/01-architecture/.gitkeep +0 -0
- package/obsidian-vault/02-smart-contracts/.gitkeep +0 -0
- package/obsidian-vault/03-backend/.gitkeep +0 -0
- package/obsidian-vault/04-mobile/.gitkeep +0 -0
- package/obsidian-vault/05-ar-mapping/.gitkeep +0 -0
- package/obsidian-vault/06-3d-assets/.gitkeep +0 -0
- package/obsidian-vault/07-sound-music/.gitkeep +0 -0
- package/obsidian-vault/08-lore/.gitkeep +0 -0
- package/obsidian-vault/09-quests-playthrough/.gitkeep +0 -0
- package/obsidian-vault/10-economy/.gitkeep +0 -0
- package/obsidian-vault/11-nft-assets/.gitkeep +0 -0
- package/obsidian-vault/12-nft-mechanics/.gitkeep +0 -0
- package/obsidian-vault/13-dao-guild-social/.gitkeep +0 -0
- package/obsidian-vault/14-game-progression/.gitkeep +0 -0
- package/obsidian-vault/15-analytics/.gitkeep +0 -0
- package/obsidian-vault/16-security/.gitkeep +0 -0
- package/obsidian-vault/17-devops/.gitkeep +0 -0
- package/obsidian-vault/18-marketplace/.gitkeep +0 -0
- package/obsidian-vault/19-decisions/.gitkeep +0 -0
- package/obsidian-vault/20-business-strategy/.gitkeep +0 -0
- package/obsidian-vault/21-legal-regulatory/.gitkeep +0 -0
- package/obsidian-vault/nodes/.gitkeep +0 -0
- package/openclaw.env.example +17 -0
- package/package.json +45 -0
- package/services/launchd/ai.openclaw.gateway.plist +59 -0
- package/services/launchd/ai.openclaw.lane-watchdog.plist +32 -0
- package/services/launchd/ai.openclaw.log-rotate.plist +28 -0
- package/services/launchd/ai.openclaw.memory-daemon.plist +36 -0
- package/services/launchd/ai.openclaw.mesh-agent.plist +38 -0
- package/services/launchd/ai.openclaw.mesh-bridge.plist +36 -0
- package/services/launchd/ai.openclaw.mesh-deploy-listener.plist +33 -0
- package/services/launchd/ai.openclaw.mesh-health-publisher.plist +29 -0
- package/services/launchd/ai.openclaw.mesh-task-daemon.plist +36 -0
- package/services/launchd/ai.openclaw.mesh-tool-discord.plist +36 -0
- package/services/launchd/ai.openclaw.mission-control.plist +41 -0
- package/services/service-manifest.json +13 -0
- package/services/systemd/openclaw-gateway.service +21 -0
- package/services/systemd/openclaw-lane-watchdog.service +21 -0
- package/services/systemd/openclaw-log-rotate.service +13 -0
- package/services/systemd/openclaw-log-rotate.timer +9 -0
- package/services/systemd/openclaw-memory-daemon.service +21 -0
- package/services/systemd/openclaw-mesh-agent.service +19 -0
- package/services/systemd/openclaw-mesh-bridge.service +21 -0
- package/services/systemd/openclaw-mesh-deploy-listener.service +23 -0
- package/services/systemd/openclaw-mesh-health-publisher.service +21 -0
- package/services/systemd/openclaw-mesh-task-daemon.service +21 -0
- package/services/systemd/openclaw-mesh-tool-discord.service +21 -0
- package/services/systemd/openclaw-mission-control.service +22 -0
- package/skills/1password/.clawhub/origin.json +7 -0
- package/skills/1password/SKILL.md +63 -0
- package/skills/1password/references/cli-examples.md +29 -0
- package/skills/1password/references/get-started.md +17 -0
- package/skills/acquisition-channel-advisor/SKILL.md +643 -0
- package/skills/acquisition-channel-advisor/examples/conversation-flow.md +531 -0
- package/skills/agent-browser/.clawhub/origin.json +7 -0
- package/skills/agent-browser/CONTRIBUTING.md +63 -0
- package/skills/agent-browser/SKILL.md +338 -0
- package/skills/agentic-compass/.clawhub/origin.json +7 -0
- package/skills/agentic-compass/README.md +96 -0
- package/skills/agentic-compass/SKILL.md +112 -0
- package/skills/agentic-compass/references/README.md +5 -0
- package/skills/agentic-compass/scripts/agentic-compass.py +196 -0
- package/skills/arcane-dev-ops/SKILL.md +61 -0
- package/skills/arcane-dev-ops/references/checklist.md +22 -0
- package/skills/arcane-dev-ops/references/validation-cases.md +11 -0
- package/skills/arcane-dev-ops/scripts/prepush_check.sh +41 -0
- package/skills/auto-updater/.clawhub/origin.json +7 -0
- package/skills/auto-updater/SKILL.md +158 -0
- package/skills/auto-updater/references/agent-guide.md +152 -0
- package/skills/auto-updater/references/summary-examples.md +109 -0
- package/skills/business-health-diagnostic/SKILL.md +782 -0
- package/skills/byterover/.clawhub/origin.json +7 -0
- package/skills/byterover/SKILL.md +105 -0
- package/skills/byterover/TROUBLESHOOTING.md +50 -0
- package/skills/byterover/WORKFLOWS.md +229 -0
- package/skills/capability-evolver/.clawhub/origin.json +7 -0
- package/skills/capability-evolver/CONTRIBUTING.md +11 -0
- package/skills/capability-evolver/README.md +157 -0
- package/skills/capability-evolver/README.zh-CN.md +112 -0
- package/skills/capability-evolver/SKILL.md +93 -0
- package/skills/capability-evolver/assets/gep/capsules.json +5 -0
- package/skills/capability-evolver/assets/gep/genes.json +104 -0
- package/skills/capability-evolver/index.js +59 -0
- package/skills/capability-evolver/package.json +22 -0
- package/skills/capability-evolver/scripts/analyze_by_skill.js +121 -0
- package/skills/capability-evolver/scripts/build_public.js +350 -0
- package/skills/capability-evolver/scripts/export_history.js +98 -0
- package/skills/capability-evolver/scripts/extract_log.js +85 -0
- package/skills/capability-evolver/scripts/generate_history.js +75 -0
- package/skills/capability-evolver/scripts/human_report.js +147 -0
- package/skills/capability-evolver/scripts/publish_public.js +516 -0
- package/skills/capability-evolver/scripts/suggest_version.js +89 -0
- package/skills/capability-evolver/src/evolve.js +594 -0
- package/skills/capability-evolver/src/gep/assetStore.js +204 -0
- package/skills/capability-evolver/src/gep/candidates.js +134 -0
- package/skills/capability-evolver/src/gep/paths.js +23 -0
- package/skills/capability-evolver/src/gep/prompt.js +254 -0
- package/skills/capability-evolver/src/gep/selector.js +89 -0
- package/skills/capability-evolver/src/gep/signals.js +27 -0
- package/skills/cc-godmode/.clawhub/origin.json +7 -0
- package/skills/cc-godmode/CHANGELOG.md +66 -0
- package/skills/cc-godmode/README.md +293 -0
- package/skills/cc-godmode/SKILL.md +242 -0
- package/skills/cc-godmode/docs/AGENTS.md +332 -0
- package/skills/cc-godmode/docs/MIGRATION.md +206 -0
- package/skills/cc-godmode/docs/TROUBLESHOOTING.md +357 -0
- package/skills/cc-godmode/docs/WORKFLOWS.md +329 -0
- package/skills/cc-godmode/references/agents.md +433 -0
- package/skills/cc-godmode/scripts/build-skill.js +232 -0
- package/skills/clawdbot-filesystem/.clawhub/origin.json +7 -0
- package/skills/clawdbot-filesystem/LICENSE.md +21 -0
- package/skills/clawdbot-filesystem/README.md +322 -0
- package/skills/clawdbot-filesystem/SKILL.md +219 -0
- package/skills/clawdbot-filesystem/config.json +41 -0
- package/skills/clawdbot-filesystem/package.json +69 -0
- package/skills/clawdbot-security-check/.clawhub/origin.json +7 -0
- package/skills/clawdbot-security-check/README.md +168 -0
- package/skills/clawdbot-security-check/SKILL.md +145 -0
- package/skills/clawdbot-security-check/references/audit-checks.md +521 -0
- package/skills/clawdbot-security-check/skill.json +42 -0
- package/skills/clawddocs/.clawhub/origin.json +7 -0
- package/skills/clawddocs/SKILL.md +176 -0
- package/skills/clawddocs/package.json +9 -0
- package/skills/clawddocs/scripts/build-index.sh +17 -0
- package/skills/clawddocs/scripts/cache.sh +13 -0
- package/skills/clawddocs/scripts/fetch-doc.sh +7 -0
- package/skills/clawddocs/scripts/recent.sh +5 -0
- package/skills/clawddocs/scripts/search.sh +8 -0
- package/skills/clawddocs/scripts/sitemap.sh +23 -0
- package/skills/clawddocs/scripts/track-changes.sh +16 -0
- package/skills/clawddocs/snippets/common-configs.md +69 -0
- package/skills/clawguard/.clawhub/origin.json +7 -0
- package/skills/clawguard/SKILL.md +137 -0
- package/skills/company-research/SKILL.md +393 -0
- package/skills/company-research/examples/sample.md +164 -0
- package/skills/company-research/template.md +60 -0
- package/skills/crypto-price/.clawhub/origin.json +7 -0
- package/skills/crypto-price/ARCHITECTURE.md +437 -0
- package/skills/crypto-price/README.md +194 -0
- package/skills/crypto-price/SKILL.md +61 -0
- package/skills/crypto-price/requirements.txt +1 -0
- package/skills/crypto-price/scripts/get_price_chart.py +988 -0
- package/skills/customer-journey-map/SKILL.md +343 -0
- package/skills/customer-journey-map/examples/sample.md +33 -0
- package/skills/customer-journey-map/template.md +28 -0
- package/skills/customer-journey-mapping-workshop/SKILL.md +522 -0
- package/skills/deep-research/.clawhub/origin.json +7 -0
- package/skills/deep-research/SKILL.md +93 -0
- package/skills/deep-research/rules/logic.md +32 -0
- package/skills/discord-telegram-triage/SKILL.md +59 -0
- package/skills/discord-telegram-triage/references/discord-runbook.md +28 -0
- package/skills/discord-telegram-triage/references/validation-cases.md +11 -0
- package/skills/discord-telegram-triage/scripts/triage_snapshot.sh +23 -0
- package/skills/discovery-interview-prep/SKILL.md +408 -0
- package/skills/discovery-process/SKILL.md +503 -0
- package/skills/discovery-process/examples/sample.md +60 -0
- package/skills/discovery-process/template.md +39 -0
- package/skills/dist/arcane-dev-ops.skill +0 -0
- package/skills/dist/discord-telegram-triage.skill +0 -0
- package/skills/dist/founder-brief-summarizer.skill +0 -0
- package/skills/epic-breakdown-advisor/SKILL.md +664 -0
- package/skills/epic-hypothesis/SKILL.md +285 -0
- package/skills/epic-hypothesis/examples/sample.md +104 -0
- package/skills/epic-hypothesis/template.md +30 -0
- package/skills/excel/.clawhub/origin.json +7 -0
- package/skills/excel/SKILL.md +332 -0
- package/skills/excel/scripts/excel.py +1120 -0
- package/skills/fast-browser-use/.clawhub/origin.json +7 -0
- package/skills/fast-browser-use/CODEBUDDY.md +142 -0
- package/skills/fast-browser-use/Cargo.toml +77 -0
- package/skills/fast-browser-use/README.md +62 -0
- package/skills/fast-browser-use/SKILL.md +217 -0
- package/skills/fast-browser-use/package-lock.json +28 -0
- package/skills/fast-browser-use/package.json +8 -0
- package/skills/fast-browser-use/rustfmt.toml +10 -0
- package/skills/fast-browser-use/src/bin/cli.rs +373 -0
- package/skills/fast-browser-use/src/bin/mcp_server.rs +203 -0
- package/skills/fast-browser-use/src/browser/config.rs +136 -0
- package/skills/fast-browser-use/src/browser/debug.rs +16 -0
- package/skills/fast-browser-use/src/browser/mod.rs +61 -0
- package/skills/fast-browser-use/src/browser/session.rs +478 -0
- package/skills/fast-browser-use/src/dom/element.rs +442 -0
- package/skills/fast-browser-use/src/dom/extract_dom.js +849 -0
- package/skills/fast-browser-use/src/dom/mod.rs +14 -0
- package/skills/fast-browser-use/src/dom/tree.rs +296 -0
- package/skills/fast-browser-use/src/dom/yaml.rs +149 -0
- package/skills/fast-browser-use/src/error.rs +115 -0
- package/skills/fast-browser-use/src/lib.rs +17 -0
- package/skills/fast-browser-use/src/mcp/handler.rs +63 -0
- package/skills/fast-browser-use/src/mcp/mod.rs +81 -0
- package/skills/fast-browser-use/src/tools/Readability.min.js +1480 -0
- package/skills/fast-browser-use/src/tools/annotate.rs +165 -0
- package/skills/fast-browser-use/src/tools/click.rs +84 -0
- package/skills/fast-browser-use/src/tools/close.rs +35 -0
- package/skills/fast-browser-use/src/tools/close_tab.rs +45 -0
- package/skills/fast-browser-use/src/tools/convert_to_markdown.js +117 -0
- package/skills/fast-browser-use/src/tools/cookies.rs +58 -0
- package/skills/fast-browser-use/src/tools/debug.rs +44 -0
- package/skills/fast-browser-use/src/tools/evaluate.rs +40 -0
- package/skills/fast-browser-use/src/tools/extract.rs +66 -0
- package/skills/fast-browser-use/src/tools/go_back.rs +35 -0
- package/skills/fast-browser-use/src/tools/go_forward.rs +35 -0
- package/skills/fast-browser-use/src/tools/hover.js +33 -0
- package/skills/fast-browser-use/src/tools/hover.rs +97 -0
- package/skills/fast-browser-use/src/tools/html_to_markdown.rs +99 -0
- package/skills/fast-browser-use/src/tools/input.rs +93 -0
- package/skills/fast-browser-use/src/tools/local_storage.rs +159 -0
- package/skills/fast-browser-use/src/tools/markdown.rs +181 -0
- package/skills/fast-browser-use/src/tools/mod.rs +326 -0
- package/skills/fast-browser-use/src/tools/navigate.rs +55 -0
- package/skills/fast-browser-use/src/tools/new_tab.rs +60 -0
- package/skills/fast-browser-use/src/tools/press_key.rs +78 -0
- package/skills/fast-browser-use/src/tools/read_links.rs +59 -0
- package/skills/fast-browser-use/src/tools/readability_script.rs +8 -0
- package/skills/fast-browser-use/src/tools/screenshot.rs +47 -0
- package/skills/fast-browser-use/src/tools/scroll.js +22 -0
- package/skills/fast-browser-use/src/tools/scroll.rs +95 -0
- package/skills/fast-browser-use/src/tools/select.js +23 -0
- package/skills/fast-browser-use/src/tools/select.rs +129 -0
- package/skills/fast-browser-use/src/tools/sitemap.rs +426 -0
- package/skills/fast-browser-use/src/tools/snapshot.rs +324 -0
- package/skills/fast-browser-use/src/tools/switch_tab.rs +69 -0
- package/skills/fast-browser-use/src/tools/tab_list.rs +76 -0
- package/skills/fast-browser-use/src/tools/utils.rs +92 -0
- package/skills/fast-browser-use/src/tools/wait.rs +53 -0
- package/skills/fast-browser-use/test_auth.json +3 -0
- package/skills/fast-browser-use/test_state.json +6 -0
- package/skills/fast-browser-use/tests/browser_tools_integration.rs +233 -0
- package/skills/fast-browser-use/tests/cli_recipes_integration.rs +112 -0
- package/skills/fast-browser-use/tests/cookies_integration.rs +56 -0
- package/skills/fast-browser-use/tests/debug_integration.rs +83 -0
- package/skills/fast-browser-use/tests/dom_integration.rs +170 -0
- package/skills/fast-browser-use/tests/local_storage_integration.rs +75 -0
- package/skills/fast-browser-use/tests/markdown_integration.rs +448 -0
- package/skills/fast-browser-use/tests/navigation_integration.rs +241 -0
- package/skills/fast-browser-use/tests/sitemap_integration.rs +326 -0
- package/skills/fast-browser-use/tests/tab_management_integration.rs +300 -0
- package/skills/feature-investment-advisor/SKILL.md +639 -0
- package/skills/feature-investment-advisor/examples/conversation-flow.md +538 -0
- package/skills/finance-based-pricing-advisor/SKILL.md +763 -0
- package/skills/finance-metrics-quickref/SKILL.md +309 -0
- package/skills/find-skills/.clawhub/origin.json +7 -0
- package/skills/find-skills/SKILL.md +143 -0
- package/skills/flavor-text-writer/SKILL.md +27 -0
- package/skills/founder-brief-summarizer/SKILL.md +52 -0
- package/skills/founder-brief-summarizer/references/response-templates.md +15 -0
- package/skills/founder-brief-summarizer/references/validation-cases.md +11 -0
- package/skills/founder-brief-summarizer/scripts/brief_template.sh +28 -0
- package/skills/frontend-design/.clawhub/origin.json +7 -0
- package/skills/frontend-design/LICENSE.txt +190 -0
- package/skills/frontend-design/SKILL.md +53 -0
- package/skills/gemini/.clawhub/origin.json +7 -0
- package/skills/gemini/SKILL.md +33 -0
- package/skills/gemini-deep-research/.clawhub/origin.json +7 -0
- package/skills/gemini-deep-research/SKILL.md +78 -0
- package/skills/gemini-deep-research/scripts/deep_research.py +176 -0
- package/skills/git-essentials/.clawhub/origin.json +7 -0
- package/skills/git-essentials/SKILL.md +239 -0
- package/skills/git-essentials/references/advanced.md +211 -0
- package/skills/github/.clawhub/origin.json +7 -0
- package/skills/github/SKILL.md +57 -0
- package/skills/google-drive/.clawhub/origin.json +7 -0
- package/skills/google-drive/LICENSE.txt +21 -0
- package/skills/google-drive/SKILL.md +320 -0
- package/skills/growth-loop/SKILL.md +270 -0
- package/skills/growth-loop/_meta.json +9 -0
- package/skills/growth-loop/references/diagnosis-framework.md +84 -0
- package/skills/growth-loop/references/platform-benchmarks.md +79 -0
- package/skills/growth-loop/scripts/init-campaign.sh +274 -0
- package/skills/humanize-ai-text/.clawhub/origin.json +7 -0
- package/skills/humanize-ai-text/SKILL.md +192 -0
- package/skills/humanize-ai-text/scripts/compare.py +58 -0
- package/skills/humanize-ai-text/scripts/detect.py +160 -0
- package/skills/humanize-ai-text/scripts/patterns.json +191 -0
- package/skills/humanize-ai-text/scripts/transform.py +127 -0
- package/skills/humanizer/.clawhub/origin.json +7 -0
- package/skills/humanizer/README.md +82 -0
- package/skills/humanizer/SKILL.md +443 -0
- package/skills/jobs-to-be-done/SKILL.md +378 -0
- package/skills/jobs-to-be-done/examples/sample.md +80 -0
- package/skills/jobs-to-be-done/template.md +65 -0
- package/skills/lean-ux-canvas/SKILL.md +561 -0
- package/skills/lean-ux-canvas/examples/sample.md +88 -0
- package/skills/lean-ux-canvas/template.md +32 -0
- package/skills/markdown-formatter/.clawhub/origin.json +7 -0
- package/skills/markdown-formatter/README.md +137 -0
- package/skills/markdown-formatter/SKILL.md +369 -0
- package/skills/markdown-formatter/config.json +20 -0
- package/skills/markdown-formatter/index.js +439 -0
- package/skills/markdown-formatter/package.json +23 -0
- package/skills/markdown-formatter/test.js +23 -0
- package/skills/marketing-mode/.clawhub/origin.json +7 -0
- package/skills/marketing-mode/README.md +49 -0
- package/skills/marketing-mode/SKILL.md +703 -0
- package/skills/marketing-mode/mode-prompt.md +39 -0
- package/skills/marketing-mode/skill.json +51 -0
- package/skills/memory-hygiene/.clawhub/origin.json +7 -0
- package/skills/memory-hygiene/SKILL.md +91 -0
- package/skills/memory-setup/.clawhub/origin.json +7 -0
- package/skills/memory-setup/SKILL.md +180 -0
- package/skills/memorylayer/.clawhub/origin.json +7 -0
- package/skills/memorylayer/README.md +197 -0
- package/skills/memorylayer/SKILL.md +227 -0
- package/skills/memorylayer/examples/agent-integration.js +145 -0
- package/skills/memorylayer/examples/basic-usage.js +87 -0
- package/skills/memorylayer/examples/token-savings-demo.js +183 -0
- package/skills/memorylayer/index.js +115 -0
- package/skills/memorylayer/package-lock.json +295 -0
- package/skills/memorylayer/package.json +27 -0
- package/skills/memorylayer/python/memorylayer_skill.py +230 -0
- package/skills/memorylayer/python/requirements.txt +7 -0
- package/skills/mesh/SKILL.md +184 -0
- package/skills/model-usage/.clawhub/origin.json +7 -0
- package/skills/model-usage/SKILL.md +54 -0
- package/skills/model-usage/references/codexbar-cli.md +28 -0
- package/skills/model-usage/scripts/model_usage.py +310 -0
- package/skills/moltbook-interact/.clawhub/origin.json +7 -0
- package/skills/moltbook-interact/INSTALL.md +139 -0
- package/skills/moltbook-interact/README.md +198 -0
- package/skills/moltbook-interact/SKILL.md +72 -0
- package/skills/moltbook-interact/references/api.md +106 -0
- package/skills/moltbook-interact/scripts/moltbook.sh +142 -0
- package/skills/moltbook-registry/.clawhub/origin.json +7 -0
- package/skills/moltbook-registry/README.md +26 -0
- package/skills/moltbook-registry/SKILL.md +82 -0
- package/skills/moltbook-registry/index.js +180 -0
- package/skills/moltbook-registry/package.json +11 -0
- package/skills/mythril-scanner/SKILL.md +27 -0
- package/skills/n8n/.clawhub/origin.json +7 -0
- package/skills/n8n/SKILL.md +141 -0
- package/skills/n8n/references/api.md +156 -0
- package/skills/n8n/scripts/n8n_api.py +158 -0
- package/skills/n8n-workflow-automation/.clawhub/origin.json +7 -0
- package/skills/n8n-workflow-automation/SKILL.md +103 -0
- package/skills/n8n-workflow-automation/assets/runbook-template.md +32 -0
- package/skills/narrative-designer/SKILL.md +27 -0
- package/skills/ontology/.clawhub/origin.json +7 -0
- package/skills/ontology/SKILL.md +236 -0
- package/skills/ontology/references/queries.md +211 -0
- package/skills/ontology/references/schema.md +322 -0
- package/skills/ontology/scripts/ontology.py +374 -0
- package/skills/openai-image-gen/.clawhub/origin.json +7 -0
- package/skills/openai-image-gen/SKILL.md +45 -0
- package/skills/openai-image-gen/scripts/gen.py +227 -0
- package/skills/openclaw-agent-optimize/.clawhub/origin.json +7 -0
- package/skills/openclaw-agent-optimize/SKILL.md +33 -0
- package/skills/openclaw-agent-optimize/references/agent-orchestration.md +20 -0
- package/skills/openclaw-agent-optimize/references/context-management.md +15 -0
- package/skills/openclaw-agent-optimize/references/continuous-learning.md +14 -0
- package/skills/openclaw-agent-optimize/references/cron-optimization.md +16 -0
- package/skills/openclaw-agent-optimize/references/memory-patterns.md +14 -0
- package/skills/openclaw-agent-optimize/references/model-selection.md +18 -0
- package/skills/openclaw-skill-scanner/.clawhub/origin.json +7 -0
- package/skills/openclaw-skill-scanner/SKILL.md +88 -0
- package/skills/openclaw-skill-scanner/install-hook.sh +294 -0
- package/skills/openclaw-skill-scanner/report-template.md +53 -0
- package/skills/openclaw-skill-scanner/scanner.py +929 -0
- package/skills/openclaw-skill-scanner/whitelist.json +18 -0
- package/skills/opportunity-solution-tree/SKILL.md +428 -0
- package/skills/opportunity-solution-tree/examples/sample.md +104 -0
- package/skills/opportunity-solution-tree/template.md +33 -0
- package/skills/pdf/.clawhub/origin.json +7 -0
- package/skills/pdf/SKILL.md +304 -0
- package/skills/pestel-analysis/SKILL.md +384 -0
- package/skills/pestel-analysis/examples/sample.md +143 -0
- package/skills/pestel-analysis/template.md +53 -0
- package/skills/pol-probe/SKILL.md +217 -0
- package/skills/pol-probe/examples/sample.md +136 -0
- package/skills/pol-probe/template.md +59 -0
- package/skills/pol-probe-advisor/SKILL.md +492 -0
- package/skills/positioning-statement/SKILL.md +229 -0
- package/skills/positioning-statement/examples/sample.md +51 -0
- package/skills/positioning-statement/template.md +25 -0
- package/skills/positioning-workshop/SKILL.md +424 -0
- package/skills/prd-development/SKILL.md +654 -0
- package/skills/prd-development/examples/sample.md +43 -0
- package/skills/prd-development/template.md +55 -0
- package/skills/press-release/SKILL.md +277 -0
- package/skills/press-release/examples/sample.md +73 -0
- package/skills/press-release/template.md +39 -0
- package/skills/prioritization-advisor/SKILL.md +451 -0
- package/skills/proactive-messages/.clawhub/origin.json +7 -0
- package/skills/proactive-messages/SKILL.md +91 -0
- package/skills/problem-framing-canvas/SKILL.md +466 -0
- package/skills/problem-framing-canvas/examples/sample.md +58 -0
- package/skills/problem-framing-canvas/template.md +22 -0
- package/skills/problem-statement/SKILL.md +255 -0
- package/skills/problem-statement/examples/sample.md +82 -0
- package/skills/problem-statement/template.md +37 -0
- package/skills/product-strategy-session/SKILL.md +434 -0
- package/skills/product-strategy-session/examples/sample.md +67 -0
- package/skills/product-strategy-session/template.md +38 -0
- package/skills/prompt-guard/.clawhub/origin.json +7 -0
- package/skills/prompt-guard/ARCHITECTURE.md +364 -0
- package/skills/prompt-guard/CHANGELOG.md +200 -0
- package/skills/prompt-guard/README.md +215 -0
- package/skills/prompt-guard/SECURITY.md +66 -0
- package/skills/prompt-guard/SKILL.md +174 -0
- package/skills/prompt-guard/blog/how-i-secured-my-ai-agent.md +185 -0
- package/skills/prompt-guard/config.example.yaml +56 -0
- package/skills/prompt-guard/references/detection-patterns.md +298 -0
- package/skills/prompt-guard/requirements.txt +1 -0
- package/skills/prompt-guard/scripts/analyze_log.py +224 -0
- package/skills/prompt-guard/scripts/audit.py +344 -0
- package/skills/prompt-guard/scripts/detect.py +1587 -0
- package/skills/prompt-guard/scripts/hivefence.py +345 -0
- package/skills/proto-persona/SKILL.md +336 -0
- package/skills/proto-persona/examples/sample.md +97 -0
- package/skills/proto-persona/template.md +45 -0
- package/skills/recommendation-canvas/SKILL.md +382 -0
- package/skills/recommendation-canvas/examples/sample.md +94 -0
- package/skills/recommendation-canvas/template.md +86 -0
- package/skills/refactor-suggest/.clawhub/origin.json +7 -0
- package/skills/refactor-suggest/SKILL.md +94 -0
- package/skills/roadmap-planning/SKILL.md +506 -0
- package/skills/roadmap-planning/examples/sample.md +62 -0
- package/skills/roadmap-planning/template.md +30 -0
- package/skills/saas-economics-efficiency-metrics/SKILL.md +694 -0
- package/skills/saas-economics-efficiency-metrics/examples/cash-trap.md +365 -0
- package/skills/saas-economics-efficiency-metrics/examples/healthy-unit-economics.md +279 -0
- package/skills/saas-economics-efficiency-metrics/template.md +263 -0
- package/skills/saas-revenue-growth-metrics/SKILL.md +629 -0
- package/skills/saas-revenue-growth-metrics/examples/healthy-saas.md +131 -0
- package/skills/saas-revenue-growth-metrics/examples/warning-signs.md +229 -0
- package/skills/saas-revenue-growth-metrics/template.md +192 -0
- package/skills/save-money/.clawhub/origin.json +7 -0
- package/skills/save-money/SKILL.md +173 -0
- package/skills/scripts/golden_skills_v3.sh +32 -0
- package/skills/search/.clawhub/origin.json +7 -0
- package/skills/search/SKILL.md +18 -0
- package/skills/search/skill.json +1 -0
- package/skills/second-brain/.clawhub/origin.json +7 -0
- package/skills/second-brain/SKILL.md +278 -0
- package/skills/second-brain/scripts/ensue-api.sh +37 -0
- package/skills/self-improving-agent/.clawhub/origin.json +7 -0
- package/skills/self-improving-agent/.learnings/ERRORS.md +5 -0
- package/skills/self-improving-agent/.learnings/FEATURE_REQUESTS.md +5 -0
- package/skills/self-improving-agent/.learnings/LEARNINGS.md +5 -0
- package/skills/self-improving-agent/SKILL.md +130 -0
- package/skills/self-improving-agent/assets/LEARNINGS.md +45 -0
- package/skills/self-improving-agent/assets/SKILL-TEMPLATE.md +177 -0
- package/skills/self-improving-agent/hooks/openclaw/HOOK.md +23 -0
- package/skills/self-improving-agent/hooks/openclaw/handler.js +56 -0
- package/skills/self-improving-agent/hooks/openclaw/handler.ts +62 -0
- package/skills/self-improving-agent/references/examples.md +374 -0
- package/skills/self-improving-agent/references/hooks-setup.md +223 -0
- package/skills/self-improving-agent/references/openclaw-integration.md +248 -0
- package/skills/self-improving-agent/references/templates.md +480 -0
- package/skills/self-improving-agent/scripts/activator.sh +20 -0
- package/skills/self-improving-agent/scripts/error-detector.sh +55 -0
- package/skills/self-improving-agent/scripts/extract-skill.sh +203 -0
- package/skills/self-improving-agent-1-0-2/.clawhub/origin.json +7 -0
- package/skills/self-improving-agent-1-0-2/SKILL.md +562 -0
- package/skills/self-improving-agent-1-0-2/assets/LEARNINGS.md +45 -0
- package/skills/self-improving-agent-1-0-2/assets/SKILL-TEMPLATE.md +182 -0
- package/skills/self-improving-agent-1-0-2/references/clawdbot-integration.md +311 -0
- package/skills/self-improving-agent-1-0-2/references/examples.md +374 -0
- package/skills/self-improving-agent-1-0-2/references/hooks-setup.md +223 -0
- package/skills/self-improving-agent-1-0-2/scripts/activator.sh +20 -0
- package/skills/self-improving-agent-1-0-2/scripts/error-detector.sh +55 -0
- package/skills/self-improving-agent-1-0-2/scripts/extract-skill.sh +203 -0
- package/skills/self-love-confidence/.clawhub/origin.json +7 -0
- package/skills/self-love-confidence/SKILL.md +79 -0
- package/skills/self-reflection/.clawhub/origin.json +7 -0
- package/skills/self-reflection/README.md +292 -0
- package/skills/self-reflection/SKILL.md +110 -0
- package/skills/self-reflection/self-reflection.example.json +6 -0
- package/skills/slither-analyzer/SKILL.md +27 -0
- package/skills/solidity-audit/SKILL.md +27 -0
- package/skills/soulcraft/.clawhub/origin.json +7 -0
- package/skills/soulcraft/README.md +123 -0
- package/skills/soulcraft/SKILL.md +340 -0
- package/skills/soulcraft/references/question-bank.md +154 -0
- package/skills/soulcraft/references/soul-examples.md +207 -0
- package/skills/soulcraft/research/RESEARCH_REPORT.md +317 -0
- package/skills/spotify-player/.clawhub/origin.json +7 -0
- package/skills/spotify-player/SKILL.md +44 -0
- package/skills/storyboard/SKILL.md +259 -0
- package/skills/storyboard/examples/sample.md +71 -0
- package/skills/storyboard/template.md +41 -0
- package/skills/summarize/.clawhub/origin.json +7 -0
- package/skills/summarize/SKILL.md +59 -0
- package/skills/superdesign/.clawhub/origin.json +7 -0
- package/skills/superdesign/SKILL.md +224 -0
- package/skills/tam-sam-som-calculator/SKILL.md +399 -0
- package/skills/tam-sam-som-calculator/examples/sample.md +142 -0
- package/skills/tam-sam-som-calculator/scripts/market-sizing.py +95 -0
- package/skills/tam-sam-som-calculator/template.md +35 -0
- package/skills/tavily-search/.clawhub/origin.json +7 -0
- package/skills/tavily-search/SKILL.md +49 -0
- package/skills/tavily-search/scripts/extract.mjs +59 -0
- package/skills/tavily-search/scripts/search.mjs +101 -0
- package/skills/twitter/SKILL.md +74 -0
- package/skills/twitter/_meta.json +9 -0
- package/skills/twitter/references/validation-cases.md +53 -0
- package/skills/twitter/scripts/twitter.sh +421 -0
- package/skills/ui-ux-pro-max/.clawhub/origin.json +7 -0
- package/skills/ui-ux-pro-max/SKILL.md +54 -0
- package/skills/ui-ux-pro-max/assets/data/charts.csv +26 -0
- package/skills/ui-ux-pro-max/assets/data/colors.csv +97 -0
- package/skills/ui-ux-pro-max/assets/data/icons.csv +101 -0
- package/skills/ui-ux-pro-max/assets/data/landing.csv +31 -0
- package/skills/ui-ux-pro-max/assets/data/products.csv +97 -0
- package/skills/ui-ux-pro-max/assets/data/react-performance.csv +45 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/astro.csv +54 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/flutter.csv +53 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/html-tailwind.csv +56 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/jetpack-compose.csv +53 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/nextjs.csv +53 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/nuxt-ui.csv +51 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/nuxtjs.csv +59 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/react-native.csv +52 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/react.csv +54 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/shadcn.csv +61 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/svelte.csv +54 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/swiftui.csv +51 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/vue.csv +50 -0
- package/skills/ui-ux-pro-max/assets/data/styles.csv +68 -0
- package/skills/ui-ux-pro-max/assets/data/typography.csv +58 -0
- package/skills/ui-ux-pro-max/assets/data/ui-reasoning.csv +101 -0
- package/skills/ui-ux-pro-max/assets/data/ux-guidelines.csv +100 -0
- package/skills/ui-ux-pro-max/assets/data/web-interface.csv +31 -0
- package/skills/ui-ux-pro-max/references/upstream-README.md +488 -0
- package/skills/ui-ux-pro-max/references/upstream-skill-content.md +288 -0
- package/skills/ui-ux-pro-max/scripts/__init__.py +0 -0
- package/skills/ui-ux-pro-max/scripts/core.py +253 -0
- package/skills/ui-ux-pro-max/scripts/design_system.py +1071 -0
- package/skills/ui-ux-pro-max/scripts/search.py +111 -0
- package/skills/user-story/SKILL.md +272 -0
- package/skills/user-story/examples/sample.md +110 -0
- package/skills/user-story/scripts/user-story-template.py +65 -0
- package/skills/user-story/template.md +32 -0
- package/skills/user-story-mapping/SKILL.md +296 -0
- package/skills/user-story-mapping/examples/sample.md +77 -0
- package/skills/user-story-mapping/template.md +41 -0
- package/skills/user-story-mapping-workshop/SKILL.md +485 -0
- package/skills/user-story-mapping-workshop/template.md +28 -0
- package/skills/user-story-splitting/SKILL.md +313 -0
- package/skills/user-story-splitting/examples/sample.md +147 -0
- package/skills/user-story-splitting/template.md +37 -0
- package/skills/wacli/.clawhub/origin.json +7 -0
- package/skills/wacli/SKILL.md +53 -0
- package/skills/web-search/.clawhub/origin.json +7 -0
- package/skills/web-search/SKILL.md +151 -0
- package/skills/web-search/references/api-details.md +207 -0
- package/skills/web-search/scripts/search.py +576 -0
- package/skills/workshop-facilitation/SKILL.md +88 -0
- package/skills/world-builder/SKILL.md +27 -0
- package/souls/blockchain-auditor/PRINCIPLES.md +75 -0
- package/souls/blockchain-auditor/SOUL.md +56 -0
- package/souls/blockchain-auditor/capabilities.json +33 -0
- package/souls/blockchain-auditor/evolution/capsules.json +4 -0
- package/souls/blockchain-auditor/evolution/events.jsonl +1 -0
- package/souls/blockchain-auditor/evolution/genes.json +62 -0
- package/souls/daedalus/PRINCIPLES.md +78 -0
- package/souls/daedalus/SOUL.md +48 -0
- package/souls/daedalus/capabilities.json +46 -0
- package/souls/identity-architect/PRINCIPLES.md +83 -0
- package/souls/identity-architect/SOUL.md +66 -0
- package/souls/identity-architect/capabilities.json +38 -0
- package/souls/identity-architect/evolution/capsules.json +4 -0
- package/souls/identity-architect/evolution/events.jsonl +0 -0
- package/souls/identity-architect/evolution/genes.json +4 -0
- package/souls/infra-ops/PRINCIPLES.md +77 -0
- package/souls/infra-ops/SOUL.md +56 -0
- package/souls/infra-ops/capabilities.json +33 -0
- package/souls/infra-ops/evolution/capsules.json +4 -0
- package/souls/infra-ops/evolution/events.jsonl +0 -0
- package/souls/infra-ops/evolution/genes.json +4 -0
- package/souls/lore-writer/PRINCIPLES.md +74 -0
- package/souls/lore-writer/SOUL.md +54 -0
- package/souls/lore-writer/capabilities.json +37 -0
- package/souls/lore-writer/evolution/capsules.json +4 -0
- package/souls/lore-writer/evolution/events.jsonl +0 -0
- package/souls/lore-writer/evolution/genes.json +4 -0
- package/souls/qa-evidence/PRINCIPLES.md +97 -0
- package/souls/qa-evidence/SOUL.md +66 -0
- package/souls/qa-evidence/capabilities.json +32 -0
- package/souls/qa-evidence/evolution/capsules.json +4 -0
- package/souls/qa-evidence/evolution/events.jsonl +0 -0
- package/souls/qa-evidence/evolution/genes.json +4 -0
- package/souls/registry.json +211 -0
- package/souls/sync-registry.js +65 -0
- package/uninstall.sh +102 -0
- package/workspace-bin/auto-checkpoint +60 -0
- package/workspace-bin/clawvault-access-control +65 -0
- package/workspace-bin/clawvault-local +28 -0
- package/workspace-bin/compile-boot +494 -0
- package/workspace-bin/daily-log-writer.mjs +251 -0
- package/workspace-bin/evolve +540 -0
- package/workspace-bin/fitness_score.py +395 -0
- package/workspace-bin/hooks/pre-commit +80 -0
- package/workspace-bin/install-daemon +299 -0
- package/workspace-bin/lane-watchdog.js +232 -0
- package/workspace-bin/lib/__init__.py +0 -0
- package/workspace-bin/lib/frontmatter.py +114 -0
- package/workspace-bin/memory-daemon.mjs +879 -0
- package/workspace-bin/memory-maintenance.mjs +531 -0
- package/workspace-bin/mesh-bridge.mjs +154 -0
- package/workspace-bin/multi-review +130 -0
- package/workspace-bin/obsidian +125 -0
- package/workspace-bin/obsidian-sync.mjs +888 -0
- package/workspace-bin/openclaw-register-source +102 -0
- package/workspace-bin/proactive-scan +147 -0
- package/workspace-bin/quality-gate +175 -0
- package/workspace-bin/screenshot +96 -0
- package/workspace-bin/session-recap +453 -0
- package/workspace-bin/skill-audit +494 -0
- package/workspace-bin/skill-quality-check +134 -0
- package/workspace-bin/skill-routing-eval +599 -0
- package/workspace-bin/soul-prompt +251 -0
- package/workspace-bin/subagent-audit.mjs +267 -0
- package/workspace-bin/test-multi-soul-workflow +130 -0
- package/workspace-bin/trust-registry +465 -0
- package/workspace-docs/AGENTS.md +201 -0
- package/workspace-docs/CLAUDE.md +64 -0
- package/workspace-docs/PRINCIPLES.md +81 -0
- package/workspace-docs/SOUL.md +48 -0
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pdf
|
|
3
|
+
description: Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, and handling forms. When Claude needs to fill in a PDF form or programmatically process, generate, or analyze PDF documents at scale.
|
|
4
|
+
triggers:
|
|
5
|
+
- "extract text from this PDF"
|
|
6
|
+
- "merge these PDFs together"
|
|
7
|
+
- "fill out this PDF form"
|
|
8
|
+
- "split this PDF into pages"
|
|
9
|
+
- "create a PDF from this content"
|
|
10
|
+
negative_triggers:
|
|
11
|
+
- "read this PDF file"
|
|
12
|
+
- "convert markdown to PDF"
|
|
13
|
+
- "open this document"
|
|
14
|
+
license: Proprietary. LICENSE.txt has complete terms
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# PDF Processing Guide
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
This guide covers essential PDF processing operations using Python libraries and command-line tools. For advanced features, JavaScript libraries, and detailed examples, see reference.md. If you need to fill out a PDF form, read forms.md and follow its instructions.
|
|
22
|
+
|
|
23
|
+
## Quick Start
|
|
24
|
+
|
|
25
|
+
```python
|
|
26
|
+
from pypdf import PdfReader, PdfWriter
|
|
27
|
+
|
|
28
|
+
# Read a PDF
|
|
29
|
+
reader = PdfReader("document.pdf")
|
|
30
|
+
print(f"Pages: {len(reader.pages)}")
|
|
31
|
+
|
|
32
|
+
# Extract text
|
|
33
|
+
text = ""
|
|
34
|
+
for page in reader.pages:
|
|
35
|
+
text += page.extract_text()
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Python Libraries
|
|
39
|
+
|
|
40
|
+
### pypdf - Basic Operations
|
|
41
|
+
|
|
42
|
+
#### Merge PDFs
|
|
43
|
+
```python
|
|
44
|
+
from pypdf import PdfWriter, PdfReader
|
|
45
|
+
|
|
46
|
+
writer = PdfWriter()
|
|
47
|
+
for pdf_file in ["doc1.pdf", "doc2.pdf", "doc3.pdf"]:
|
|
48
|
+
reader = PdfReader(pdf_file)
|
|
49
|
+
for page in reader.pages:
|
|
50
|
+
writer.add_page(page)
|
|
51
|
+
|
|
52
|
+
with open("merged.pdf", "wb") as output:
|
|
53
|
+
writer.write(output)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
#### Split PDF
|
|
57
|
+
```python
|
|
58
|
+
reader = PdfReader("input.pdf")
|
|
59
|
+
for i, page in enumerate(reader.pages):
|
|
60
|
+
writer = PdfWriter()
|
|
61
|
+
writer.add_page(page)
|
|
62
|
+
with open(f"page_{i+1}.pdf", "wb") as output:
|
|
63
|
+
writer.write(output)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
#### Extract Metadata
|
|
67
|
+
```python
|
|
68
|
+
reader = PdfReader("document.pdf")
|
|
69
|
+
meta = reader.metadata
|
|
70
|
+
print(f"Title: {meta.title}")
|
|
71
|
+
print(f"Author: {meta.author}")
|
|
72
|
+
print(f"Subject: {meta.subject}")
|
|
73
|
+
print(f"Creator: {meta.creator}")
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
#### Rotate Pages
|
|
77
|
+
```python
|
|
78
|
+
reader = PdfReader("input.pdf")
|
|
79
|
+
writer = PdfWriter()
|
|
80
|
+
|
|
81
|
+
page = reader.pages[0]
|
|
82
|
+
page.rotate(90) # Rotate 90 degrees clockwise
|
|
83
|
+
writer.add_page(page)
|
|
84
|
+
|
|
85
|
+
with open("rotated.pdf", "wb") as output:
|
|
86
|
+
writer.write(output)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### pdfplumber - Text and Table Extraction
|
|
90
|
+
|
|
91
|
+
#### Extract Text with Layout
|
|
92
|
+
```python
|
|
93
|
+
import pdfplumber
|
|
94
|
+
|
|
95
|
+
with pdfplumber.open("document.pdf") as pdf:
|
|
96
|
+
for page in pdf.pages:
|
|
97
|
+
text = page.extract_text()
|
|
98
|
+
print(text)
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
#### Extract Tables
|
|
102
|
+
```python
|
|
103
|
+
with pdfplumber.open("document.pdf") as pdf:
|
|
104
|
+
for i, page in enumerate(pdf.pages):
|
|
105
|
+
tables = page.extract_tables()
|
|
106
|
+
for j, table in enumerate(tables):
|
|
107
|
+
print(f"Table {j+1} on page {i+1}:")
|
|
108
|
+
for row in table:
|
|
109
|
+
print(row)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
#### Advanced Table Extraction
|
|
113
|
+
```python
|
|
114
|
+
import pandas as pd
|
|
115
|
+
|
|
116
|
+
with pdfplumber.open("document.pdf") as pdf:
|
|
117
|
+
all_tables = []
|
|
118
|
+
for page in pdf.pages:
|
|
119
|
+
tables = page.extract_tables()
|
|
120
|
+
for table in tables:
|
|
121
|
+
if table: # Check if table is not empty
|
|
122
|
+
df = pd.DataFrame(table[1:], columns=table[0])
|
|
123
|
+
all_tables.append(df)
|
|
124
|
+
|
|
125
|
+
# Combine all tables
|
|
126
|
+
if all_tables:
|
|
127
|
+
combined_df = pd.concat(all_tables, ignore_index=True)
|
|
128
|
+
combined_df.to_excel("extracted_tables.xlsx", index=False)
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### reportlab - Create PDFs
|
|
132
|
+
|
|
133
|
+
#### Basic PDF Creation
|
|
134
|
+
```python
|
|
135
|
+
from reportlab.lib.pagesizes import letter
|
|
136
|
+
from reportlab.pdfgen import canvas
|
|
137
|
+
|
|
138
|
+
c = canvas.Canvas("hello.pdf", pagesize=letter)
|
|
139
|
+
width, height = letter
|
|
140
|
+
|
|
141
|
+
# Add text
|
|
142
|
+
c.drawString(100, height - 100, "Hello World!")
|
|
143
|
+
c.drawString(100, height - 120, "This is a PDF created with reportlab")
|
|
144
|
+
|
|
145
|
+
# Add a line
|
|
146
|
+
c.line(100, height - 140, 400, height - 140)
|
|
147
|
+
|
|
148
|
+
# Save
|
|
149
|
+
c.save()
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
#### Create PDF with Multiple Pages
|
|
153
|
+
```python
|
|
154
|
+
from reportlab.lib.pagesizes import letter
|
|
155
|
+
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, PageBreak
|
|
156
|
+
from reportlab.lib.styles import getSampleStyleSheet
|
|
157
|
+
|
|
158
|
+
doc = SimpleDocTemplate("report.pdf", pagesize=letter)
|
|
159
|
+
styles = getSampleStyleSheet()
|
|
160
|
+
story = []
|
|
161
|
+
|
|
162
|
+
# Add content
|
|
163
|
+
title = Paragraph("Report Title", styles['Title'])
|
|
164
|
+
story.append(title)
|
|
165
|
+
story.append(Spacer(1, 12))
|
|
166
|
+
|
|
167
|
+
body = Paragraph("This is the body of the report. " * 20, styles['Normal'])
|
|
168
|
+
story.append(body)
|
|
169
|
+
story.append(PageBreak())
|
|
170
|
+
|
|
171
|
+
# Page 2
|
|
172
|
+
story.append(Paragraph("Page 2", styles['Heading1']))
|
|
173
|
+
story.append(Paragraph("Content for page 2", styles['Normal']))
|
|
174
|
+
|
|
175
|
+
# Build PDF
|
|
176
|
+
doc.build(story)
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## Command-Line Tools
|
|
180
|
+
|
|
181
|
+
### pdftotext (poppler-utils)
|
|
182
|
+
```bash
|
|
183
|
+
# Extract text
|
|
184
|
+
pdftotext input.pdf output.txt
|
|
185
|
+
|
|
186
|
+
# Extract text preserving layout
|
|
187
|
+
pdftotext -layout input.pdf output.txt
|
|
188
|
+
|
|
189
|
+
# Extract specific pages
|
|
190
|
+
pdftotext -f 1 -l 5 input.pdf output.txt # Pages 1-5
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### qpdf
|
|
194
|
+
```bash
|
|
195
|
+
# Merge PDFs
|
|
196
|
+
qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf
|
|
197
|
+
|
|
198
|
+
# Split pages
|
|
199
|
+
qpdf input.pdf --pages . 1-5 -- pages1-5.pdf
|
|
200
|
+
qpdf input.pdf --pages . 6-10 -- pages6-10.pdf
|
|
201
|
+
|
|
202
|
+
# Rotate pages
|
|
203
|
+
qpdf input.pdf output.pdf --rotate=+90:1 # Rotate page 1 by 90 degrees
|
|
204
|
+
|
|
205
|
+
# Remove password
|
|
206
|
+
qpdf --password=mypassword --decrypt encrypted.pdf decrypted.pdf
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### pdftk (if available)
|
|
210
|
+
```bash
|
|
211
|
+
# Merge
|
|
212
|
+
pdftk file1.pdf file2.pdf cat output merged.pdf
|
|
213
|
+
|
|
214
|
+
# Split
|
|
215
|
+
pdftk input.pdf burst
|
|
216
|
+
|
|
217
|
+
# Rotate
|
|
218
|
+
pdftk input.pdf rotate 1east output rotated.pdf
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
## Common Tasks
|
|
222
|
+
|
|
223
|
+
### Extract Text from Scanned PDFs
|
|
224
|
+
```python
|
|
225
|
+
# Requires: pip install pytesseract pdf2image
|
|
226
|
+
import pytesseract
|
|
227
|
+
from pdf2image import convert_from_path
|
|
228
|
+
|
|
229
|
+
# Convert PDF to images
|
|
230
|
+
images = convert_from_path('scanned.pdf')
|
|
231
|
+
|
|
232
|
+
# OCR each page
|
|
233
|
+
text = ""
|
|
234
|
+
for i, image in enumerate(images):
|
|
235
|
+
text += f"Page {i+1}:\n"
|
|
236
|
+
text += pytesseract.image_to_string(image)
|
|
237
|
+
text += "\n\n"
|
|
238
|
+
|
|
239
|
+
print(text)
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Add Watermark
|
|
243
|
+
```python
|
|
244
|
+
from pypdf import PdfReader, PdfWriter
|
|
245
|
+
|
|
246
|
+
# Create watermark (or load existing)
|
|
247
|
+
watermark = PdfReader("watermark.pdf").pages[0]
|
|
248
|
+
|
|
249
|
+
# Apply to all pages
|
|
250
|
+
reader = PdfReader("document.pdf")
|
|
251
|
+
writer = PdfWriter()
|
|
252
|
+
|
|
253
|
+
for page in reader.pages:
|
|
254
|
+
page.merge_page(watermark)
|
|
255
|
+
writer.add_page(page)
|
|
256
|
+
|
|
257
|
+
with open("watermarked.pdf", "wb") as output:
|
|
258
|
+
writer.write(output)
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### Extract Images
|
|
262
|
+
```bash
|
|
263
|
+
# Using pdfimages (poppler-utils)
|
|
264
|
+
pdfimages -j input.pdf output_prefix
|
|
265
|
+
|
|
266
|
+
# This extracts all images as output_prefix-000.jpg, output_prefix-001.jpg, etc.
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### Password Protection
|
|
270
|
+
```python
|
|
271
|
+
from pypdf import PdfReader, PdfWriter
|
|
272
|
+
|
|
273
|
+
reader = PdfReader("input.pdf")
|
|
274
|
+
writer = PdfWriter()
|
|
275
|
+
|
|
276
|
+
for page in reader.pages:
|
|
277
|
+
writer.add_page(page)
|
|
278
|
+
|
|
279
|
+
# Add password
|
|
280
|
+
writer.encrypt("userpassword", "ownerpassword")
|
|
281
|
+
|
|
282
|
+
with open("encrypted.pdf", "wb") as output:
|
|
283
|
+
writer.write(output)
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
## Quick Reference
|
|
287
|
+
|
|
288
|
+
| Task | Best Tool | Command/Code |
|
|
289
|
+
|------|-----------|--------------|
|
|
290
|
+
| Merge PDFs | pypdf | `writer.add_page(page)` |
|
|
291
|
+
| Split PDFs | pypdf | One page per file |
|
|
292
|
+
| Extract text | pdfplumber | `page.extract_text()` |
|
|
293
|
+
| Extract tables | pdfplumber | `page.extract_tables()` |
|
|
294
|
+
| Create PDFs | reportlab | Canvas or Platypus |
|
|
295
|
+
| Command line merge | qpdf | `qpdf --empty --pages ...` |
|
|
296
|
+
| OCR scanned PDFs | pytesseract | Convert to image first |
|
|
297
|
+
| Fill PDF forms | pdf-lib or pypdf (see forms.md) | See forms.md |
|
|
298
|
+
|
|
299
|
+
## Next Steps
|
|
300
|
+
|
|
301
|
+
- For advanced pypdfium2 usage, see reference.md
|
|
302
|
+
- For JavaScript libraries (pdf-lib), see reference.md
|
|
303
|
+
- If you need to fill out a PDF form, follow the instructions in forms.md
|
|
304
|
+
- For troubleshooting guides, see reference.md
|
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pestel-analysis
|
|
3
|
+
description: "Use this to analyze macro-environmental factors (Political, Economic, Social, Technological, Environmental, Legal) affecting your product. Identifies external opportunities, threats, and strategic risks."
|
|
4
|
+
type: component
|
|
5
|
+
triggers:
|
|
6
|
+
- "run a PESTEL analysis"
|
|
7
|
+
- "what external factors affect this product"
|
|
8
|
+
- "assess macro environment for market entry"
|
|
9
|
+
- "analyze political and economic risks"
|
|
10
|
+
- "do a macro-environment scan"
|
|
11
|
+
negative_triggers:
|
|
12
|
+
- "analyze our competitors"
|
|
13
|
+
- "do an internal SWOT"
|
|
14
|
+
- "review our product metrics"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## Purpose
|
|
19
|
+
Conduct a systematic analysis of macro-environmental factors—Political, Economic, Social, Technological, Environmental, and Legal—that could impact your product or project. Use this to identify external opportunities and threats, inform strategic planning, assess market entry risks, and make data-driven decisions about product direction in the context of broader forces beyond your control.
|
|
20
|
+
|
|
21
|
+
This is not internal analysis—it's outward-facing assessment of the big-picture forces shaping your product's environment.
|
|
22
|
+
|
|
23
|
+
## Key Concepts
|
|
24
|
+
|
|
25
|
+
### The PESTEL Framework
|
|
26
|
+
Originating from Francis Joseph Aguilar's 1967 PEST analysis, PESTEL extends the framework to six categories:
|
|
27
|
+
|
|
28
|
+
1. **Political:** Government policies, stability, trade regulations, taxation
|
|
29
|
+
2. **Economic:** Growth rates, inflation, exchange rates, consumer spending
|
|
30
|
+
3. **Social:** Demographics, cultural trends, lifestyle changes, consumer attitudes
|
|
31
|
+
4. **Technological:** Advancements, R&D, automation, digital transformation
|
|
32
|
+
5. **Environmental:** Climate change, sustainability, resource scarcity, regulations
|
|
33
|
+
6. **Legal:** Compliance, IP rights, employment laws, health/safety regulations
|
|
34
|
+
|
|
35
|
+
### Why This Works
|
|
36
|
+
- **Comprehensive:** Covers all major external forces affecting your product
|
|
37
|
+
- **Proactive:** Identifies threats and opportunities before they become critical
|
|
38
|
+
- **Strategic:** Informs long-term planning, not just tactical decisions
|
|
39
|
+
- **Risk management:** Highlights vulnerabilities in your product strategy
|
|
40
|
+
|
|
41
|
+
### Anti-Patterns (What This Is NOT)
|
|
42
|
+
- **Not competitive analysis:** PESTEL looks at macro factors, not competitors
|
|
43
|
+
- **Not internal analysis:** Focuses on external environment, not your company's strengths/weaknesses
|
|
44
|
+
- **Not static:** Macro environment changes—reassess regularly
|
|
45
|
+
|
|
46
|
+
### When to Use This
|
|
47
|
+
- Entering a new market or geography
|
|
48
|
+
- Strategic planning (annual roadmapping, 3-5 year planning)
|
|
49
|
+
- Assessing product viability in a changing environment
|
|
50
|
+
- Risk assessment for new product initiatives
|
|
51
|
+
- Pitching to execs or investors (shows environmental awareness)
|
|
52
|
+
|
|
53
|
+
### When NOT to Use This
|
|
54
|
+
- For tactical, short-term decisions (use competitive analysis instead)
|
|
55
|
+
- When external factors are stable and well-understood
|
|
56
|
+
- As a substitute for customer research (PESTEL is macro, not micro)
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Application
|
|
61
|
+
|
|
62
|
+
Use `template.md` for the full fill-in structure.
|
|
63
|
+
|
|
64
|
+
### Step 1: Define the Scope
|
|
65
|
+
|
|
66
|
+
Clarify what you're analyzing:
|
|
67
|
+
|
|
68
|
+
```markdown
|
|
69
|
+
## Overview
|
|
70
|
+
|
|
71
|
+
- **Project/Product Name:** [e.g., "AI-Powered Invoice Automation for SMBs"]
|
|
72
|
+
- **Analysis Purpose:** [e.g., "Assess viability of launching in EU market"]
|
|
73
|
+
- **Analyst:** [Your name or team]
|
|
74
|
+
- **Date:** [Date of analysis]
|
|
75
|
+
- **Geographic Scope:** [e.g., "United States and European Union"]
|
|
76
|
+
- **Time Horizon:** [e.g., "Next 12-24 months"]
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Quality checks:**
|
|
80
|
+
- **Specific:** Not "analyze market" but "assess viability of EU launch"
|
|
81
|
+
- **Time-bound:** PESTEL factors change—state your horizon
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
### Step 2: Analyze Political Factors
|
|
86
|
+
|
|
87
|
+
Examine government and regulatory influences:
|
|
88
|
+
|
|
89
|
+
```markdown
|
|
90
|
+
## 1. Political Factors
|
|
91
|
+
|
|
92
|
+
### Government Policies
|
|
93
|
+
- [How could government policies impact the product?]
|
|
94
|
+
- [Example: "EU's AI Act requires transparency in AI decision-making; our invoice automation must explain recommendations"]
|
|
95
|
+
|
|
96
|
+
### Political Stability
|
|
97
|
+
- [Assess stability in relevant regions]
|
|
98
|
+
- [Example: "US political stability is moderate; potential for regulatory changes in financial tech under new administration"]
|
|
99
|
+
|
|
100
|
+
### Trade Regulations
|
|
101
|
+
- [Examine trade regulations and their effects]
|
|
102
|
+
- [Example: "Brexit complicates data transfer between UK and EU; may require separate infrastructure"]
|
|
103
|
+
|
|
104
|
+
### Taxation Policy
|
|
105
|
+
- [Analyze taxation policies and implications]
|
|
106
|
+
- [Example: "Digital services tax in EU (3% on revenue) could impact pricing strategy"]
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Quality checks:**
|
|
110
|
+
- **Specific to your product:** Don't list generic policies—explain the impact
|
|
111
|
+
- **Actionable:** Can you adjust strategy based on this insight?
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
### Step 3: Analyze Economic Factors
|
|
116
|
+
|
|
117
|
+
Examine economic conditions:
|
|
118
|
+
|
|
119
|
+
```markdown
|
|
120
|
+
## 2. Economic Factors
|
|
121
|
+
|
|
122
|
+
### Economic Growth
|
|
123
|
+
- [Evaluate growth rates and their impact]
|
|
124
|
+
- [Example: "SMB sector growing 5% annually in US; strong demand for automation tools"]
|
|
125
|
+
|
|
126
|
+
### Inflation Rate
|
|
127
|
+
- [Consider inflation and its effect on pricing/costs]
|
|
128
|
+
- [Example: "High inflation (6%) pressures SMB budgets; price sensitivity increases"]
|
|
129
|
+
|
|
130
|
+
### Exchange Rates
|
|
131
|
+
- [Analyze exchange rate fluctuations]
|
|
132
|
+
- [Example: "Weak Euro vs. Dollar makes US pricing less competitive in EU; may need regional pricing"]
|
|
133
|
+
|
|
134
|
+
### Consumer Spending
|
|
135
|
+
- [Assess consumer spending levels]
|
|
136
|
+
- [Example: "SMBs cutting discretionary spending due to recession fears; emphasize ROI (time savings) in messaging"]
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Quality checks:**
|
|
140
|
+
- **Data-driven:** Use real economic indicators (GDP growth, inflation rates, etc.)
|
|
141
|
+
- **Product-specific:** How do these trends affect *your* product?
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
### Step 4: Analyze Social Factors
|
|
146
|
+
|
|
147
|
+
Examine societal and cultural trends:
|
|
148
|
+
|
|
149
|
+
```markdown
|
|
150
|
+
## 3. Social Factors
|
|
151
|
+
|
|
152
|
+
### Demographics
|
|
153
|
+
- [Examine demographics and market influence]
|
|
154
|
+
- [Example: "Aging SMB owners (Baby Boomers) less tech-savvy; younger Gen X/Millennial owners more receptive to automation"]
|
|
155
|
+
|
|
156
|
+
### Cultural Trends
|
|
157
|
+
- [Analyze cultural trends and demand impact]
|
|
158
|
+
- [Example: "Growing 'hustle culture' among freelancers increases demand for time-saving tools"]
|
|
159
|
+
|
|
160
|
+
### Lifestyle Changes
|
|
161
|
+
- [Consider lifestyle changes and implications]
|
|
162
|
+
- [Example: "Remote work boom increases solo entrepreneurs and freelancers; core target market expanding"]
|
|
163
|
+
|
|
164
|
+
### Consumer Attitudes
|
|
165
|
+
- [Assess consumer attitudes and behaviors]
|
|
166
|
+
- [Example: "Increasing trust in AI for routine tasks (invoicing, scheduling); less resistance than 5 years ago"]
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
**Quality checks:**
|
|
170
|
+
- **Trend-based:** Reference actual cultural shifts, not assumptions
|
|
171
|
+
- **Validated:** Use survey data, research reports, or demographic studies
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
### Step 5: Analyze Technological Factors
|
|
176
|
+
|
|
177
|
+
Examine technology landscape:
|
|
178
|
+
|
|
179
|
+
```markdown
|
|
180
|
+
## 4. Technological Factors
|
|
181
|
+
|
|
182
|
+
### Technological Advancements
|
|
183
|
+
- [Identify advancements and their impact]
|
|
184
|
+
- [Example: "Large language models (LLMs) enable better invoice data extraction; competitive advantage if adopted early"]
|
|
185
|
+
|
|
186
|
+
### R&D Activity
|
|
187
|
+
- [Evaluate sector R&D levels]
|
|
188
|
+
- [Example: "High R&D investment in fintech automation; rapid innovation cycle—need to iterate fast"]
|
|
189
|
+
|
|
190
|
+
### Automation
|
|
191
|
+
- [Assess automation implications]
|
|
192
|
+
- [Example: "Competitors adopting AI-powered automation; table stakes for market entry—must match or exceed"]
|
|
193
|
+
|
|
194
|
+
### Digital Transformation
|
|
195
|
+
- [Consider digital transformation trends]
|
|
196
|
+
- [Example: "SMBs adopting cloud-first tools (QuickBooks Online, Xero); need strong integrations to succeed"]
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
**Quality checks:**
|
|
200
|
+
- **Competitive context:** How does the tech landscape affect your position?
|
|
201
|
+
- **Actionable:** What R&D or partnerships do you need?
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
### Step 6: Analyze Environmental Factors
|
|
206
|
+
|
|
207
|
+
Examine environmental and sustainability issues:
|
|
208
|
+
|
|
209
|
+
```markdown
|
|
210
|
+
## 5. Environmental Factors
|
|
211
|
+
|
|
212
|
+
### Climate Change
|
|
213
|
+
- [Analyze climate change implications]
|
|
214
|
+
- [Example: "Minimal direct impact; however, B Corps and sustainability-focused SMBs prefer vendors with carbon-neutral operations"]
|
|
215
|
+
|
|
216
|
+
### Sustainability Practices
|
|
217
|
+
- [Evaluate sustainability impact]
|
|
218
|
+
- [Example: "Growing demand for 'green tech'; marketing opportunity to highlight cloud efficiency vs. on-prem servers"]
|
|
219
|
+
|
|
220
|
+
### Resource Scarcity
|
|
221
|
+
- [Assess resource scarcity risks]
|
|
222
|
+
- [Example: "Low risk; software product doesn't depend on physical resources"]
|
|
223
|
+
|
|
224
|
+
### Environmental Regulations
|
|
225
|
+
- [Examine environmental regulations]
|
|
226
|
+
- [Example: "EU's Carbon Border Adjustment Mechanism (CBAM) doesn't affect SaaS directly"]
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
**Quality checks:**
|
|
230
|
+
- **Honest assessment:** If impact is minimal, say so (don't force relevance)
|
|
231
|
+
- **Market positioning:** Can environmental factors be a differentiator?
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
### Step 7: Analyze Legal Factors
|
|
236
|
+
|
|
237
|
+
Examine legal and compliance landscape:
|
|
238
|
+
|
|
239
|
+
```markdown
|
|
240
|
+
## 6. Legal Factors
|
|
241
|
+
|
|
242
|
+
### Compliance Requirements
|
|
243
|
+
- [Identify legal/compliance requirements]
|
|
244
|
+
- [Example: "GDPR compliance required for EU customers; must implement data residency, right-to-be-forgotten, consent management"]
|
|
245
|
+
|
|
246
|
+
### Intellectual Property Rights
|
|
247
|
+
- [Evaluate IP importance and protection]
|
|
248
|
+
- [Example: "Patent landscape for AI invoice processing is crowded; focus on trade secrets over patents"]
|
|
249
|
+
|
|
250
|
+
### Employment Laws
|
|
251
|
+
- [Consider employment laws and implications]
|
|
252
|
+
- [Example: "Remote hiring across EU requires understanding of local labor laws (Germany, France have strict employment contracts)"]
|
|
253
|
+
|
|
254
|
+
### Health and Safety Regulations
|
|
255
|
+
- [Assess health/safety regulations]
|
|
256
|
+
- [Example: "Not applicable (software product)"]
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**Quality checks:**
|
|
260
|
+
- **Legal risk assessment:** What could block or delay your product?
|
|
261
|
+
- **Compliance costs:** Budget for legal, data residency, certifications?
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
### Step 8: Synthesize Insights
|
|
266
|
+
|
|
267
|
+
After analyzing all six factors, summarize:
|
|
268
|
+
|
|
269
|
+
```markdown
|
|
270
|
+
## Strategic Insights Summary
|
|
271
|
+
|
|
272
|
+
### Top Opportunities:
|
|
273
|
+
1. **[Opportunity 1]** - [Description and action]
|
|
274
|
+
- [Example: "Social: Remote work boom expands target market → Increase marketing to freelancers"]
|
|
275
|
+
2. **[Opportunity 2]** - [Description and action]
|
|
276
|
+
3. **[Opportunity 3]** - [Description and action]
|
|
277
|
+
|
|
278
|
+
### Top Threats:
|
|
279
|
+
1. **[Threat 1]** - [Description and mitigation]
|
|
280
|
+
- [Example: "Economic: Recession fears increase price sensitivity → Emphasize ROI in messaging, offer lower-tier pricing"]
|
|
281
|
+
2. **[Threat 2]** - [Description and mitigation]
|
|
282
|
+
3. **[Threat 3]** - [Description and mitigation]
|
|
283
|
+
|
|
284
|
+
### Strategic Recommendations:
|
|
285
|
+
1. **[Recommendation 1]** - [Action to take]
|
|
286
|
+
2. **[Recommendation 2]** - [Action to take]
|
|
287
|
+
3. **[Recommendation 3]** - [Action to take]
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
### Step 9: Update Regularly
|
|
293
|
+
|
|
294
|
+
- **Annual review:** Reassess PESTEL factors during strategic planning
|
|
295
|
+
- **Trigger events:** Update when major external events occur (new regulations, economic shifts, etc.)
|
|
296
|
+
- **Track changes:** Document how factors evolve over time
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## Examples
|
|
301
|
+
|
|
302
|
+
See `examples/sample.md` for a full PESTEL analysis example.
|
|
303
|
+
|
|
304
|
+
Mini example excerpt:
|
|
305
|
+
|
|
306
|
+
```markdown
|
|
307
|
+
### 1. Political Factors
|
|
308
|
+
- EU AI Act requires transparency in AI decision-making
|
|
309
|
+
|
|
310
|
+
### 2. Economic Factors
|
|
311
|
+
- High inflation increases SMB price sensitivity
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
## Common Pitfalls
|
|
315
|
+
|
|
316
|
+
### Pitfall 1: Generic Analysis
|
|
317
|
+
**Symptom:** "Political: Regulations exist. Economic: Economy affects spending."
|
|
318
|
+
|
|
319
|
+
**Consequence:** No actionable insights.
|
|
320
|
+
|
|
321
|
+
**Fix:** Be specific: "EU AI Act requires explainable AI → Need transparency features by Q3 2026."
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
### Pitfall 2: Ignoring Low-Impact Factors
|
|
326
|
+
**Symptom:** Forcing relevance where none exists (e.g., "Climate change affects our SaaS product...")
|
|
327
|
+
|
|
328
|
+
**Consequence:** Wastes time, dilutes focus.
|
|
329
|
+
|
|
330
|
+
**Fix:** If a factor has low impact, say so. Focus effort on high-impact areas.
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
### Pitfall 3: No Data Sources
|
|
335
|
+
**Symptom:** "Economic growth is strong" (no citation)
|
|
336
|
+
|
|
337
|
+
**Consequence:** Unverifiable claims, low credibility.
|
|
338
|
+
|
|
339
|
+
**Fix:** Cite sources: "SMB sector growing 5% annually (US Census Bureau, 2025)."
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
### Pitfall 4: Analysis Without Action
|
|
344
|
+
**Symptom:** Long list of factors, no strategic recommendations
|
|
345
|
+
|
|
346
|
+
**Consequence:** Insights don't inform decisions.
|
|
347
|
+
|
|
348
|
+
**Fix:** Synthesize into "Top Opportunities," "Top Threats," and "Strategic Recommendations."
|
|
349
|
+
|
|
350
|
+
---
|
|
351
|
+
|
|
352
|
+
### Pitfall 5: One-Time Exercise
|
|
353
|
+
**Symptom:** PESTEL analysis done once, never revisited
|
|
354
|
+
|
|
355
|
+
**Consequence:** Stale insights as macro environment shifts.
|
|
356
|
+
|
|
357
|
+
**Fix:** Review annually or when major external events occur (new regulations, economic shifts, etc.).
|
|
358
|
+
|
|
359
|
+
---
|
|
360
|
+
|
|
361
|
+
## References
|
|
362
|
+
|
|
363
|
+
### Related Skills
|
|
364
|
+
- `skills/recommendation-canvas/SKILL.md` — PESTEL factors inform risk assessment in canvas
|
|
365
|
+
- `skills/positioning-statement/SKILL.md` — PESTEL insights shape competitive positioning
|
|
366
|
+
- `skills/problem-statement/SKILL.md` — Social/economic factors influence customer problems
|
|
367
|
+
|
|
368
|
+
### External Frameworks
|
|
369
|
+
- Francis Joseph Aguilar, *Scanning the Business Environment* (1967) — Origin of PEST analysis
|
|
370
|
+
- PESTEL (extension of PEST to include Environmental and Legal)
|
|
371
|
+
- Michael Porter, *Competitive Strategy* (1980) — Complements PESTEL with industry-level analysis
|
|
372
|
+
|
|
373
|
+
### Dean's Work
|
|
374
|
+
- PESTEL Analysis Prompt Template (adapted from Aguilar's framework)
|
|
375
|
+
|
|
376
|
+
### Provenance
|
|
377
|
+
- Adapted from `prompts/pestel-analysis-prompt-template.md` in the `https://github.com/deanpeters/product-manager-prompts` repo.
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
**Skill type:** Component
|
|
382
|
+
**Suggested filename:** `pestel-analysis.md`
|
|
383
|
+
**Suggested placement:** `/skills/components/`
|
|
384
|
+
**Dependencies:** References `skills/recommendation-canvas/SKILL.md`, `skills/positioning-statement/SKILL.md`
|