@hybridlabor-api/aos 4.2.0-beta.0 → 4.3.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/.agents/graph.md +3 -1
- package/.agents/nodes.json +4 -2
- package/.claude/workflows/startcycle-dispatch.mjs +18 -5
- package/.claude/workflows/teamwork-dispatch.mjs +287 -0
- package/CLAUDE.md +37 -84
- package/CODEX.md +31 -12
- package/GEMINI.md +51 -58
- package/README.de.md +13 -12
- package/README.md +13 -12
- package/README.pt.md +13 -12
- package/THIRD_PARTY_NOTICES.md +104 -0
- package/docs/skills_table.md +1 -0
- package/installer.js +27 -10
- package/package.json +6 -1
- package/scripts/validate-skills.mjs +402 -0
- package/skills/basic/bdbmediastorm/SKILL.md +7 -5
- package/skills/basic/godmode-engineering/SKILL.md +1 -1
- package/skills/basic/godmode-shipping/SKILL.md +1 -1
- package/skills/basic/startcycle/SKILL.md +3 -1
- package/skills/basic/startcycle-graph/SKILL.md +18 -2
- package/skills/basic/startcycle-graph-user/SKILL.md +3 -1
- package/skills/basic/teamwork-preview/SKILL.md +209 -0
- package/skills/bdbrainstorm/SKILL.md +4 -3
- package/skills/github-repo/SKILL.md +1 -0
- package/skills/global_config/agent-tool-builder/SKILL.md +5 -4
- package/skills/global_config/ai-product/SKILL.md +3 -2
- package/skills/global_config/ask-tim/SKILL.md +75 -6
- package/skills/global_config/{bdb-adobe-suite-mcp.md → bdb-adobe-suite-mcp/SKILL.md} +1 -0
- package/skills/global_config/{bdb-after-effects-mcp.md → bdb-after-effects-mcp/SKILL.md} +1 -0
- package/skills/global_config/{bdb-blender-mcp.md → bdb-blender-mcp/SKILL.md} +1 -0
- package/skills/global_config/{bdb-computer-use-mcp.md → bdb-computer-use-mcp/SKILL.md} +1 -0
- package/skills/global_config/{bdb-davinci-mcp.md → bdb-davinci-mcp/SKILL.md} +1 -0
- package/skills/global_config/bdb-ecosystem-health/SKILL.md +3 -3
- package/skills/global_config/{bdb-grandma3-mcp.md → bdb-grandma3-mcp/SKILL.md} +1 -0
- package/skills/global_config/{bdb-memb-mcp.md → bdb-memb-mcp/SKILL.md} +10 -0
- package/skills/global_config/{bdb-resolume-mcp.md → bdb-resolume-mcp/SKILL.md} +1 -0
- package/skills/global_config/{bdb-rhino-mcp.md → bdb-rhino-mcp/SKILL.md} +1 -0
- package/skills/global_config/{bdb-touchdesigner-mcp.md → bdb-touchdesigner-mcp/SKILL.md} +1 -0
- package/skills/global_config/{bdb-unreal-mcp.md → bdb-unreal-mcp/SKILL.md} +1 -0
- package/skills/global_config/{bdb-vectorworks-mcp.md → bdb-vectorworks-mcp/SKILL.md} +1 -0
- package/skills/global_config/bdbresilience/SKILL.md +216 -0
- package/skills/global_config/bdbresilience/contracts/nodes-integration.md +225 -0
- package/skills/global_config/bdbresilience/references/cicd-triage.md +179 -0
- package/skills/global_config/bdbresilience/references/distributed-locking.md +235 -0
- package/skills/global_config/bdbresilience/references/error-recovery.md +210 -0
- package/skills/global_config/bdbresilience/references/two-phase-go-gate.md +151 -0
- package/skills/global_config/bdbsaashost/SKILL.md +50 -50
- package/skills/global_config/browser-automation/SKILL.md +4 -4
- package/skills/global_config/crewai/SKILL.md +3 -2
- package/skills/global_config/debugger/SKILL.md +3 -6
- package/skills/global_config/domain-modeling/ADR-FORMAT.md +47 -0
- package/skills/global_config/domain-modeling/CONTEXT-FORMAT.md +60 -0
- package/skills/global_config/domain-modeling/SKILL.md +77 -0
- package/skills/global_config/git-advanced-workflows/SKILL.md +0 -1
- package/skills/global_config/github-actions-templates/SKILL.md +0 -2
- package/skills/global_config/google-sheets-automation/SKILL.md +2 -2
- package/skills/global_config/grill-me/SKILL.md +14 -0
- package/skills/global_config/grill-with-docs/SKILL.md +24 -0
- package/skills/global_config/grilling/SKILL.md +42 -0
- package/skills/global_config/neon-postgres/SKILL.md +3 -2
- package/skills/global_config/openwiki-skill/scripts/install_daemon.sh +55 -12
- package/skills/global_config/playwright-skill/SKILL.md +1 -1
- package/skills/global_config/posix-shell-pro/SKILL.md +0 -1
- package/skills/global_config/postgres-best-practices/SKILL.md +1 -1
- package/skills/global_config/prompt-engineering-patterns/SKILL.md +0 -1
- package/skills/global_config/rag-engineer/SKILL.md +4 -3
- package/skills/global_config/react-best-practices/SKILL.md +1 -1
- package/skills/global_config/remotion/SKILL.md +0 -1
- package/skills/global_config/seo/SKILL.md +6 -41
- package/skills/global_config/systematic-debugging/CREATION-LOG.md +1 -1
- package/skills/global_config/systematic-debugging/root-cause-tracing.md +1 -1
- package/skills/global_config/turborepo-caching/SKILL.md +0 -1
- package/skills/global_config/using-neon/SKILL.md +1 -47
- package/skills/global_config/vector-database-engineer/SKILL.md +0 -1
- package/skills/global_config/web-artifacts-builder/LICENSE.txt +1 -1
- package/skills/global_config/web-artifacts-builder/SKILL.md +1 -1
- package/skills/global_config/webapp-testing/LICENSE.txt +1 -1
- package/skills/global_config/webapp-testing/SKILL.md +1 -1
- package/.agents/skills/firecrawl/SKILL.md +0 -149
- package/.agents/skills/firecrawl/rules/install.md +0 -82
- package/.agents/skills/firecrawl/rules/security.md +0 -26
- package/.agents/skills/firecrawl-agent/SKILL.md +0 -58
- package/.agents/skills/firecrawl-build/SKILL.md +0 -39
- package/.agents/skills/firecrawl-build-interact/SKILL.md +0 -68
- package/.agents/skills/firecrawl-build-onboarding/SKILL.md +0 -103
- package/.agents/skills/firecrawl-build-onboarding/references/auth-flow.md +0 -39
- package/.agents/skills/firecrawl-build-onboarding/references/project-setup.md +0 -20
- package/.agents/skills/firecrawl-build-onboarding/references/sdk-installation.md +0 -17
- package/.agents/skills/firecrawl-build-scrape/SKILL.md +0 -69
- package/.agents/skills/firecrawl-build-search/SKILL.md +0 -69
- package/.agents/skills/firecrawl-crawl/SKILL.md +0 -59
- package/.agents/skills/firecrawl-download/SKILL.md +0 -70
- package/.agents/skills/firecrawl-interact/SKILL.md +0 -84
- package/.agents/skills/firecrawl-map/SKILL.md +0 -51
- package/.agents/skills/firecrawl-scrape/SKILL.md +0 -69
- package/.agents/skills/firecrawl-search/SKILL.md +0 -60
- package/mcps/RhinoMCP/cc-plugin/.claude/settings.json +0 -10
- package/mcps/after-effects-mcp/build/index.js +0 -840
- package/mcps/after-effects-mcp/build/scripts/applyEffect.jsx +0 -153
- package/mcps/after-effects-mcp/build/scripts/applyEffectTemplate.jsx +0 -218
- package/mcps/after-effects-mcp/build/scripts/createComposition.jsx +0 -71
- package/mcps/after-effects-mcp/build/scripts/createShapeLayer.jsx +0 -147
- package/mcps/after-effects-mcp/build/scripts/createSolidLayer.jsx +0 -114
- package/mcps/after-effects-mcp/build/scripts/createTextLayer.jsx +0 -115
- package/mcps/after-effects-mcp/build/scripts/getLayerInfo.jsx +0 -192
- package/mcps/after-effects-mcp/build/scripts/getProjectInfo.jsx +0 -90
- package/mcps/after-effects-mcp/build/scripts/listCompositions.jsx +0 -50
- package/mcps/after-effects-mcp/build/scripts/mcp-bridge-auto.jsx +0 -1773
- package/mcps/after-effects-mcp/build/scripts/setLayerProperties.jsx +0 -160
- package/mcps/bdb-remoteos-mcp/queue.db +0 -0
- package/mcps/bdb-remoteos-mcp/src/bdb_remoteos_mcp/__pycache__/__init__.cpython-312.pyc +0 -0
- package/mcps/bdb-remoteos-mcp/src/bdb_remoteos_mcp/__pycache__/incus_client.cpython-312.pyc +0 -0
- package/mcps/bdb-remoteos-mcp/src/bdb_remoteos_mcp/__pycache__/main.cpython-312.pyc +0 -0
- package/mcps/bdb-remoteos-mcp/src/bdb_remoteos_mcp/__pycache__/queue.cpython-312.pyc +0 -0
- package/mcps/bdb-remoteos-mcp/src/bdb_remoteos_mcp/__pycache__/schemas.cpython-312.pyc +0 -0
- package/mcps/bdb-remoteos-mcp/src/bdb_remoteos_mcp/__pycache__/server.cpython-312.pyc +0 -0
- package/mcps/bdb-remoteos-mcp/src/bdb_remoteos_mcp/__pycache__/webhook.cpython-312.pyc +0 -0
- package/mcps/bdb-remoteos-mcp/tests/__pycache__/__init__.cpython-312.pyc +0 -0
- package/mcps/bdb-remoteos-mcp/tests/__pycache__/mock_incus.cpython-312.pyc +0 -0
- package/mcps/bdb-remoteos-mcp/tests/__pycache__/test_mcp_server.cpython-312-pytest-9.1.1.pyc +0 -0
- package/mcps/bdb-remoteos-mcp/tests/__pycache__/test_security_redteam.cpython-312-pytest-9.1.1.pyc +0 -0
- package/mcps/bdb-remoteos-mcp/tests/__pycache__/test_webhook.cpython-312-pytest-9.1.1.pyc +0 -0
- package/mcps/computer-use-mcp/dist/client.d.ts +0 -150
- package/mcps/computer-use-mcp/dist/client.js +0 -136
- package/mcps/computer-use-mcp/dist/entrypoint.d.ts +0 -16
- package/mcps/computer-use-mcp/dist/entrypoint.js +0 -26
- package/mcps/computer-use-mcp/dist/native.d.ts +0 -212
- package/mcps/computer-use-mcp/dist/native.js +0 -50
- package/mcps/computer-use-mcp/dist/server.d.ts +0 -32
- package/mcps/computer-use-mcp/dist/server.js +0 -342
- package/mcps/computer-use-mcp/dist/session.d.ts +0 -101
- package/mcps/computer-use-mcp/dist/session.js +0 -2372
- package/skills/bdbsaastraining/scripts/__pycache__/build_profile.cpython-314.pyc +0 -0
|
@@ -9,7 +9,7 @@ date_added: "2026-08-27"
|
|
|
9
9
|
|
|
10
10
|
# 🚀 BDB SaaS Host - Master Fleet & AI-Agent Operations Skill (`/bdbsaashost`)
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
You are the authoritative **BDB SaaS Host Operator**. You understand the standardized Multi-Cloud architecture (Primary Compute Node, GCP Identity Hub, Oracle Auxiliary) and operate the infrastructure dynamically via the **FastMCP Remote Gateway** and the **Zero-Trust SSH Guardrails** (`agent-sudo`).
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
@@ -47,79 +47,79 @@ Master operational skill for the BDB Multi-Cloud Fleet, governing interactions w
|
|
|
47
47
|
|
|
48
48
|
## 🌐 1. Multi-Cloud Fleet Reference Architecture
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
Endpoints are resolved **dynamically** from the local project configuration (`.env`, `~/.gemini/antigravity-cli/mcp/`, or `config.json`):
|
|
51
51
|
|
|
52
|
-
|
|
|
52
|
+
| Component | Reference / Standard Port | Purpose & Services |
|
|
53
53
|
| :--- | :--- | :--- |
|
|
54
54
|
| **Primary Compute Node** | `NETCUP_IP` / `PRIMARY_HOST` | Incus System-Container, Staging/Production Apps, WordPress, Froxlor, Caddy Proxy, FastMCP Gateway, AI Agent Sandboxes |
|
|
55
55
|
| **Identity Hub** | `GCP_IP` / `IDENTITY_HOST` | LLDAP Directory (`:3890`, `:17170`), Authelia 2FA / Passkeys / WebAuthn SSO (`:9091`), Step-CA (SSH CA `:9000`), Uptime Kuma |
|
|
56
56
|
| **Auxiliary Services** | `ORACLE_IP` / `AUX_HOST` | Background Job Queues (BullMQ), PostgreSQL Replicas, Media Engines |
|
|
57
|
-
| **FastMCP Gateway (Machine API)** | `https://api.<PROJECT_DOMAIN>/tools/*` | REST
|
|
58
|
-
| **Human Approval Dashboard** | `https://gateway.<PROJECT_DOMAIN>/approvals` |
|
|
59
|
-
| **Identity & SSO Portal** | `https://auth.<PROJECT_DOMAIN>` |
|
|
60
|
-
| **Status Page** | `https://status.<PROJECT_DOMAIN>/status/services` |
|
|
57
|
+
| **FastMCP Gateway (Machine API)** | `https://api.<PROJECT_DOMAIN>/tools/*` | REST endpoints for autonomous agents (OIDC Bearer Auth) |
|
|
58
|
+
| **Human Approval Dashboard** | `https://gateway.<PROJECT_DOMAIN>/approvals` | Four-eyes approval dashboard for mutating/dangerous actions and `agent-sudo` |
|
|
59
|
+
| **Identity & SSO Portal** | `https://auth.<PROJECT_DOMAIN>` | Central Authelia 2FA login portal |
|
|
60
|
+
| **Status Page** | `https://status.<PROJECT_DOMAIN>/status/services` | Public 24/7 Uptime Kuma monitoring status page |
|
|
61
61
|
|
|
62
|
-
> **
|
|
63
|
-
>
|
|
62
|
+
> **Dynamic Parameter Resolution:**
|
|
63
|
+
> Before execution, read the active host addresses and domains from the local configuration (`~/.gemini/antigravity-cli/mcp/bdb_remoteos_gateway/config.json`, `.env`, or `~/.ssh/config`).
|
|
64
64
|
|
|
65
65
|
---
|
|
66
66
|
|
|
67
|
-
## 🔐 2.
|
|
67
|
+
## 🔐 2. Authentication & Connection Handshake (Zero-Key Philosophy)
|
|
68
68
|
|
|
69
|
-
> **Single Source of Truth.**
|
|
69
|
+
> **Single Source of Truth.** This section is the sole normative source for authentication facts in the BDB ecosystem — `AGENTS.md`, `bdbsaastraining/SKILL.md`, and other skills reference it instead of repeating it.
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
**NEVER** ask the user for manual API keys or static passwords. The BDB system uses automated Zero-Trust handshakes:
|
|
72
72
|
|
|
73
|
-
1. **In Antigravity / Cursor IDE (
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
* **
|
|
73
|
+
1. **In Antigravity / Cursor IDE (Local Workstation):**
|
|
74
|
+
* The FastMCP Gateway is automatically wired via `node bin/setup-workstation.mjs` (Browser 2FA via Authelia).
|
|
75
|
+
* The active token lies locally in `~/.gemini/antigravity-cli/mcp/bdb_remoteos_gateway/config.json`.
|
|
76
|
+
* **Action:** Use the supplied MCP tools (`remoteos_...`) directly without asking the user for connection parameters!
|
|
77
77
|
|
|
78
|
-
2. **
|
|
79
|
-
* **
|
|
80
|
-
* **
|
|
81
|
-
* **
|
|
78
|
+
2. **On the Linux Server via SSH:**
|
|
79
|
+
* **Human Admins:** Authenticate via `step ssh login <user>` (Authelia WebAuthn 2FA, 16h ephemeral certificates) and have standard `sudo`.
|
|
80
|
+
* **Autonomous AI Agents (`ai_agents`):** Obtain per RFC 7523 / RFC 9068 a short-lived OIDC access token via `private_key_jwt` from Authelia (`https://auth.<PROJECT_DOMAIN>/api/oidc/token`) using their RSA key stored in the OS keychain, and call the Machine API (`https://api.<PROJECT_DOMAIN>/tools/*`) with `Authorization: Bearer <token>`.
|
|
81
|
+
* **Privileged Commands on the Server:** **MUST** be executed with `agent-sudo <command>`, without exception.
|
|
82
82
|
|
|
83
83
|
---
|
|
84
84
|
|
|
85
|
-
## 🛠️ 3.
|
|
85
|
+
## 🛠️ 3. The FastMCP Toolkit (Tool Overview)
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
Use these tools directly for cluster tasks:
|
|
88
88
|
|
|
89
|
-
| Tool
|
|
89
|
+
| Tool Name | Purpose & Function | Guardrail Behavior |
|
|
90
90
|
| :--- | :--- | :--- |
|
|
91
|
-
| `remoteos_get_system_status` |
|
|
92
|
-
| `remoteos_create_instance` |
|
|
93
|
-
| `remoteos_manage_instance` | Lifecycle
|
|
94
|
-
| `remoteos_add_route` |
|
|
95
|
-
| `remoteos_get_dns_blueprint` |
|
|
96
|
-
| `create_lldap_user` |
|
|
91
|
+
| `remoteos_get_system_status` | Queries the live status of all nodes, Incus containers, and Cloudflare DNS. | Immediate execution |
|
|
92
|
+
| `remoteos_create_instance` | Creates a new Incus system container (Froxlor, WordPress, AI-Agent sandbox) with automatic DNS/Caddy setup. | `staging1`: Immediate / `production`: four-eyes approval |
|
|
93
|
+
| `remoteos_manage_instance` | Lifecycle control (start, stop, restart, delete). | `start/stop`: Immediate / `restart/delete`: four-eyes approval |
|
|
94
|
+
| `remoteos_add_route` | Sets up Caddy reverse-proxy routes with Authelia 2FA and Cloudflare DNS sync. | Immediate execution |
|
|
95
|
+
| `remoteos_get_dns_blueprint` | Generates RFC-compliant DNS packets (A, MX, SPF, DKIM, DMARC) for customer domains. | Immediate execution |
|
|
96
|
+
| `create_lldap_user` | Creates real accounts in LLDAP (`admins`, `users`, `ai_agents`) and permanently links agents to their `owner`. | Immediate execution (background worker sends emails for humans) |
|
|
97
97
|
|
|
98
98
|
---
|
|
99
99
|
|
|
100
|
-
## 🛡️ 4.
|
|
100
|
+
## 🛡️ 4. The Four-Eyes Principle & `agent-sudo` (SSH Layer)
|
|
101
101
|
|
|
102
|
-
|
|
102
|
+
When a command or MCP tool triggers the guardrails:
|
|
103
103
|
|
|
104
|
-
1. **Auto-Approve (
|
|
105
|
-
*
|
|
106
|
-
2. **
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
104
|
+
1. **Auto-Approve (Safe Commands):**
|
|
105
|
+
* Commands like `ls`, `cat`, `grep`, `pwd`, `whoami` are **automatically approved and executed as root** by `agent-sudo` in milliseconds.
|
|
106
|
+
2. **Manual Approval (Critical Commands):**
|
|
107
|
+
* Commands like `docker`, `systemctl`, `rm`, `apt`, `incus` are queued into `queue.db`.
|
|
108
|
+
* The terminal blocks (*"Waiting for approval..."*).
|
|
109
|
+
* The owner (`owner`) receives a push to their dashboard: `https://gateway.<PROJECT_DOMAIN>/approvals`.
|
|
110
|
+
* After clicking **Approve**, the `agent-execution-daemon` executes the command as `root` and returns the result to the shell.
|
|
111
111
|
|
|
112
112
|
---
|
|
113
113
|
|
|
114
|
-
## 📋 5. Standard
|
|
115
|
-
|
|
116
|
-
* **
|
|
117
|
-
$\rightarrow$
|
|
118
|
-
* **
|
|
119
|
-
$\rightarrow$
|
|
120
|
-
* **
|
|
121
|
-
$\rightarrow$
|
|
122
|
-
* **
|
|
123
|
-
$\rightarrow$
|
|
124
|
-
* **
|
|
125
|
-
$\rightarrow$ **`get_pending_approvals`
|
|
114
|
+
## 📋 5. Standard Response Patterns
|
|
115
|
+
|
|
116
|
+
* **When the user asks:** *"How do I connect to the cluster?"*
|
|
117
|
+
$\rightarrow$ Explain that the MCP tools are already active, run `remoteos_get_system_status` directly, and show the cluster overview.
|
|
118
|
+
* **When the user asks:** *"Create a new agent"*
|
|
119
|
+
$\rightarrow$ Call `create_lldap_user(username="agent-...", group="ai_agents", owner="<CURRENT_ADMIN>")`. After successful execution, reply: *"The user has been created in LLDAP. The background worker now sends the setup emails automatically."* **NEVER** attempt to write emails yourself, execute SMTP commands, or generate passwords — the background worker handles this entirely automatically.
|
|
120
|
+
* **When an SSH command via `agent-sudo` is blocked (critical command, `queue.db`):**
|
|
121
|
+
$\rightarrow$ Inform the user: *"This action requires four-eyes approval. Please confirm it in the Approval Dashboard."*
|
|
122
|
+
* **When a FastMCP tool call (e.g. `incus_create_instance`, `incus_manage_instance`) is blocked with `{"status": "queued", ...}` because you belong to the LDAP group `ai_agents`:**
|
|
123
|
+
$\rightarrow$ Do NOT retry and do not attempt to fix the error yourself. Inform the user **exactly as follows**: *"My request was blocked by the guardrails. Please approve it here: [https://gateway.<PROJECT_DOMAIN>/approvals](https://gateway.<PROJECT_DOMAIN>/approvals)"*
|
|
124
|
+
* **When the user asks:** *"Show me pending requests"* or *"Check the approvals"*
|
|
125
|
+
$\rightarrow$ **`get_pending_approvals` was decommissioned (A9, 2026-09-06)** — a machine tool that could read the approval queue would structurally undermine the four-eyes principle. Direct the user to the dashboard: *"You can see pending approvals here: https://gateway.\<PROJECT_DOMAIN\>/approvals"*
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: browser-automation
|
|
3
|
-
description:
|
|
3
|
+
description: >-
|
|
4
|
+
Browser automation powers web testing, scraping, and AI agent interactions.
|
|
5
|
+
The difference between a flaky script and a reliable system comes down to
|
|
6
|
+
understanding selectors, waiting strategies, and anti-detection patterns.
|
|
4
7
|
category: library
|
|
5
|
-
interactions. The difference between a flaky script and a reliable system
|
|
6
|
-
comes down to understanding selectors, waiting strategies, and anti-detection
|
|
7
|
-
patterns.
|
|
8
8
|
risk: unknown
|
|
9
9
|
source: vibeship-spawner-skills (Apache 2.0)
|
|
10
10
|
date_added: 2026-02-27
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: crewai
|
|
3
|
-
description:
|
|
3
|
+
description: >-
|
|
4
|
+
Expert in CrewAI - the leading role-based multi-agent framework used by 60%
|
|
5
|
+
of Fortune 500 companies.
|
|
4
6
|
category: library
|
|
5
|
-
used by 60% of Fortune 500 companies.
|
|
6
7
|
risk: unknown
|
|
7
8
|
source: vibeship-spawner-skills (Apache 2.0)
|
|
8
9
|
date_added: 2026-02-27
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: debugger
|
|
3
|
-
description:
|
|
3
|
+
description: >-
|
|
4
|
+
Debugging specialist for errors, test failures, and unexpected behavior.
|
|
5
|
+
Use proactively when encountering any issues.
|
|
4
6
|
category: library
|
|
5
|
-
|
|
6
|
-
behavior. Use proactively when encountering any issues.
|
|
7
|
-
|
|
8
|
-
'
|
|
9
7
|
risk: safe
|
|
10
8
|
source: community
|
|
11
9
|
date_added: '2026-02-27'
|
|
@@ -26,7 +24,6 @@ date_added: '2026-02-27'
|
|
|
26
24
|
- Clarify goals, constraints, and required inputs.
|
|
27
25
|
- Apply relevant best practices and validate outcomes.
|
|
28
26
|
- Provide actionable steps and verification.
|
|
29
|
-
- If detailed examples are required, open `resources/implementation-playbook.md`.
|
|
30
27
|
|
|
31
28
|
You are an expert debugger specializing in root cause analysis.
|
|
32
29
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# ADR Format
|
|
2
|
+
|
|
3
|
+
ADRs live in `docs/adr/` and use sequential numbering: `0001-slug.md`, `0002-slug.md`, etc.
|
|
4
|
+
|
|
5
|
+
Create the `docs/adr/` directory lazily: only when the first ADR is needed.
|
|
6
|
+
|
|
7
|
+
## Template
|
|
8
|
+
|
|
9
|
+
```md
|
|
10
|
+
# {Short title of the decision}
|
|
11
|
+
|
|
12
|
+
{1-3 sentences: what's the context, what did we decide, and why.}
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
That's it. An ADR can be a single paragraph. The value is in recording *that* a decision was made and *why*, not in filling out sections.
|
|
16
|
+
|
|
17
|
+
## Optional sections
|
|
18
|
+
|
|
19
|
+
Only include these when they add genuine value. Most ADRs won't need them.
|
|
20
|
+
|
|
21
|
+
- **Status** frontmatter (`proposed | accepted | deprecated | superseded by ADR-NNNN`): useful when decisions are revisited
|
|
22
|
+
- **Considered Options**: only when the rejected alternatives are worth remembering
|
|
23
|
+
- **Consequences**: only when non-obvious downstream effects need to be called out
|
|
24
|
+
|
|
25
|
+
## Numbering
|
|
26
|
+
|
|
27
|
+
Scan `docs/adr/` for the highest existing number and increment by one.
|
|
28
|
+
|
|
29
|
+
## When to offer an ADR
|
|
30
|
+
|
|
31
|
+
All three of these must be true:
|
|
32
|
+
|
|
33
|
+
1. **Hard to reverse**: the cost of changing your mind later is meaningful
|
|
34
|
+
2. **Surprising without context**: a future reader will look at the code and wonder "why on earth did they do it this way?"
|
|
35
|
+
3. **The result of a real trade-off**: there were genuine alternatives and you picked one for specific reasons
|
|
36
|
+
|
|
37
|
+
If a decision is easy to reverse, skip it: you'll just reverse it. If it's not surprising, nobody will wonder why. If there was no real alternative, there's nothing to record beyond "we did the obvious thing."
|
|
38
|
+
|
|
39
|
+
### What qualifies
|
|
40
|
+
|
|
41
|
+
- **Architectural shape.** "We're using a monorepo." "The write model is event-sourced, the read model is projected into Postgres."
|
|
42
|
+
- **Integration patterns between contexts.** "Ordering and Billing communicate via domain events, not synchronous HTTP."
|
|
43
|
+
- **Technology choices that carry lock-in.** Database, message bus, auth provider, deployment target. Not every library: just the ones that would take a quarter to swap out.
|
|
44
|
+
- **Boundary and scope decisions.** "Customer data is owned by the Customer context; other contexts reference it by ID only." The explicit no-s are as valuable as the yes-s.
|
|
45
|
+
- **Deliberate deviations from the obvious path.** "We're using manual SQL instead of an ORM because X." Anything where a reasonable reader would assume the opposite. These stop the next engineer from "fixing" something that was deliberate.
|
|
46
|
+
- **Constraints not visible in the code.** "We can't use AWS because of compliance requirements." "Response times must be under 200ms because of the partner API contract."
|
|
47
|
+
- **Rejected alternatives when the rejection is non-obvious.** If you considered GraphQL and picked REST for subtle reasons, record it; otherwise someone will suggest GraphQL again in six months.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# CONTEXT.md Format
|
|
2
|
+
|
|
3
|
+
## Structure
|
|
4
|
+
|
|
5
|
+
```md
|
|
6
|
+
# {Context Name}
|
|
7
|
+
|
|
8
|
+
{One or two sentence description of what this context is and why it exists.}
|
|
9
|
+
|
|
10
|
+
## Language
|
|
11
|
+
|
|
12
|
+
**Order**:
|
|
13
|
+
{A one or two sentence description of the term}
|
|
14
|
+
_Avoid_: Purchase, transaction
|
|
15
|
+
|
|
16
|
+
**Invoice**:
|
|
17
|
+
A request for payment sent to a customer after delivery.
|
|
18
|
+
_Avoid_: Bill, payment request
|
|
19
|
+
|
|
20
|
+
**Customer**:
|
|
21
|
+
A person or organization that places orders.
|
|
22
|
+
_Avoid_: Client, buyer, account
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Rules
|
|
26
|
+
|
|
27
|
+
- **Be opinionated.** When multiple words exist for the same concept, pick the best one and list the others under `_Avoid_`.
|
|
28
|
+
- **Keep definitions tight.** One or two sentences max. Define what it IS, not what it does.
|
|
29
|
+
- **Only include terms specific to this project's context.** General programming concepts (timeouts, error types, utility patterns) don't belong even if the project uses them extensively. Before adding a term, ask: is this a concept unique to this context, or a general programming concept? Only the former belongs.
|
|
30
|
+
- **Group terms under subheadings** when natural clusters emerge. If all terms belong to a single cohesive area, a flat list is fine.
|
|
31
|
+
|
|
32
|
+
## Single vs multi-context repos
|
|
33
|
+
|
|
34
|
+
**Single context (most repos):** One `CONTEXT.md` at the repo root.
|
|
35
|
+
|
|
36
|
+
**Multiple contexts:** A `CONTEXT-MAP.md` at the repo root lists the contexts, where they live, and how they relate to each other:
|
|
37
|
+
|
|
38
|
+
```md
|
|
39
|
+
# Context Map
|
|
40
|
+
|
|
41
|
+
## Contexts
|
|
42
|
+
|
|
43
|
+
- [Ordering](./src/ordering/CONTEXT.md): receives and tracks customer orders
|
|
44
|
+
- [Billing](./src/billing/CONTEXT.md): generates invoices and processes payments
|
|
45
|
+
- [Fulfillment](./src/fulfillment/CONTEXT.md): manages warehouse picking and shipping
|
|
46
|
+
|
|
47
|
+
## Relationships
|
|
48
|
+
|
|
49
|
+
- **Ordering → Fulfillment**: Ordering emits `OrderPlaced` events; Fulfillment consumes them to start picking
|
|
50
|
+
- **Fulfillment → Billing**: Fulfillment emits `ShipmentDispatched` events; Billing consumes them to generate invoices
|
|
51
|
+
- **Ordering ↔ Billing**: Shared types for `CustomerId` and `Money`
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
The skill infers which structure applies:
|
|
55
|
+
|
|
56
|
+
- If `CONTEXT-MAP.md` exists, read it to find contexts
|
|
57
|
+
- If only a root `CONTEXT.md` exists, single context
|
|
58
|
+
- If neither exists, create a root `CONTEXT.md` lazily when the first term is resolved
|
|
59
|
+
|
|
60
|
+
When multiple contexts exist, infer which one the current topic relates to. If unclear, ask.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: domain-modeling
|
|
3
|
+
description: Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a CONTEXT.md, or recording or editing an ADR.
|
|
4
|
+
category: engineering-method
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<!-- Source: mattpocock/skills skills/engineering/domain-modeling — MIT, see THIRD_PARTY_NOTICES.md -->
|
|
8
|
+
|
|
9
|
+
# Domain Modeling
|
|
10
|
+
|
|
11
|
+
Actively build and sharpen the project's domain model as you design. This is the *active* discipline: challenging terms, inventing edge-case scenarios, and writing the glossary and decisions down the moment they crystallise. (Merely *reading* `CONTEXT.md` for vocabulary is not this skill: that's a one-line habit any skill can do. This skill is for when you're changing the model, not just consuming it.)
|
|
12
|
+
|
|
13
|
+
## File structure
|
|
14
|
+
|
|
15
|
+
Most repos have a single context:
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
/
|
|
19
|
+
├── CONTEXT.md
|
|
20
|
+
├── docs/
|
|
21
|
+
│ └── adr/
|
|
22
|
+
│ ├── 0001-event-sourced-orders.md
|
|
23
|
+
│ └── 0002-postgres-for-write-model.md
|
|
24
|
+
└── src/
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
If a `CONTEXT-MAP.md` exists at the root, the repo has multiple contexts. The map points to where each one lives:
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
/
|
|
31
|
+
├── CONTEXT-MAP.md
|
|
32
|
+
├── docs/
|
|
33
|
+
│ └── adr/ ← system-wide decisions
|
|
34
|
+
├── src/
|
|
35
|
+
│ ├── ordering/
|
|
36
|
+
│ │ ├── CONTEXT.md
|
|
37
|
+
│ │ └── docs/adr/ ← context-specific decisions
|
|
38
|
+
│ └── billing/
|
|
39
|
+
│ ├── CONTEXT.md
|
|
40
|
+
│ └── docs/adr/
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Create files lazily: only when you have something to write. If no `CONTEXT.md` exists, create one when the first term is resolved. If no `docs/adr/` exists, create it when the first ADR is needed.
|
|
44
|
+
|
|
45
|
+
## During the session
|
|
46
|
+
|
|
47
|
+
### Challenge against the glossary
|
|
48
|
+
|
|
49
|
+
When the user uses a term that conflicts with the existing language in `CONTEXT.md`, call it out immediately. "Your glossary defines 'cancellation' as X, but you seem to mean Y. Which is it?"
|
|
50
|
+
|
|
51
|
+
### Sharpen fuzzy language
|
|
52
|
+
|
|
53
|
+
When the user uses vague or overloaded terms, propose a precise canonical term. "You're saying 'account': do you mean the Customer or the User? Those are different things."
|
|
54
|
+
|
|
55
|
+
### Discuss concrete scenarios
|
|
56
|
+
|
|
57
|
+
When domain relationships are being discussed, stress-test them with specific scenarios. Invent scenarios that probe edge cases and force the user to be precise about the boundaries between concepts.
|
|
58
|
+
|
|
59
|
+
### Cross-reference with code
|
|
60
|
+
|
|
61
|
+
When the user states how something works, check whether the code agrees. If you find a contradiction, surface it: "Your code cancels entire Orders, but you just said partial cancellation is possible. Which is right?"
|
|
62
|
+
|
|
63
|
+
### Update CONTEXT.md inline
|
|
64
|
+
|
|
65
|
+
When a term is resolved, update `CONTEXT.md` right there. Don't batch these up: capture them as they happen. Use the format in [CONTEXT-FORMAT.md](./CONTEXT-FORMAT.md).
|
|
66
|
+
|
|
67
|
+
`CONTEXT.md` should be totally devoid of implementation details. Do not treat `CONTEXT.md` as a spec, a scratch pad, or a repository for implementation decisions. It is a glossary and nothing else.
|
|
68
|
+
|
|
69
|
+
### Offer ADRs sparingly
|
|
70
|
+
|
|
71
|
+
Only offer to create an ADR when all three are true:
|
|
72
|
+
|
|
73
|
+
1. **Hard to reverse**: the cost of changing your mind later is meaningful
|
|
74
|
+
2. **Surprising without context**: a future reader will wonder "why did they do it this way?"
|
|
75
|
+
3. **The result of a real trade-off**: there were genuine alternatives and you picked one for specific reasons
|
|
76
|
+
|
|
77
|
+
If any of the three is missing, skip the ADR. Use the format in [ADR-FORMAT.md](./ADR-FORMAT.md).
|
|
@@ -21,7 +21,6 @@ Master advanced Git techniques to maintain clean history, collaborate effectivel
|
|
|
21
21
|
- Clarify goals, constraints, and required inputs.
|
|
22
22
|
- Apply relevant best practices and validate outcomes.
|
|
23
23
|
- Provide actionable steps and verification.
|
|
24
|
-
- If detailed examples are required, open `resources/implementation-playbook.md`.
|
|
25
24
|
|
|
26
25
|
## Use this skill when
|
|
27
26
|
|
|
@@ -21,7 +21,6 @@ Production-ready GitHub Actions workflow patterns for testing, building, and dep
|
|
|
21
21
|
- Clarify goals, constraints, and required inputs.
|
|
22
22
|
- Apply relevant best practices and validate outcomes.
|
|
23
23
|
- Provide actionable steps and verification.
|
|
24
|
-
- If detailed examples are required, open `resources/implementation-playbook.md`.
|
|
25
24
|
|
|
26
25
|
## Purpose
|
|
27
26
|
|
|
@@ -340,7 +339,6 @@ jobs:
|
|
|
340
339
|
- `assets/test-workflow.yml` - Testing workflow template
|
|
341
340
|
- `assets/deploy-workflow.yml` - Deployment workflow template
|
|
342
341
|
- `assets/matrix-build.yml` - Matrix build template
|
|
343
|
-
- `references/common-workflows.md` - Common workflow patterns
|
|
344
342
|
|
|
345
343
|
## Related Skills
|
|
346
344
|
|
|
@@ -3,7 +3,7 @@ name: google-sheets-automation
|
|
|
3
3
|
description: "Lightweight Google Sheets integration with standalone OAuth authentication. No MCP server required. Full read/write access."
|
|
4
4
|
category: library
|
|
5
5
|
risk: critical
|
|
6
|
-
source:
|
|
6
|
+
source: sanjay3290/ai-skills (Apache-2.0)
|
|
7
7
|
license: Apache-2.0
|
|
8
8
|
metadata:
|
|
9
9
|
author: sanjay3290
|
|
@@ -35,7 +35,7 @@ python scripts/auth.py logout
|
|
|
35
35
|
|
|
36
36
|
## Read Commands
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
Auto-authenticates on first use if not logged in.
|
|
39
39
|
|
|
40
40
|
```bash
|
|
41
41
|
# Get spreadsheet content as plain text (default)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: grill-me
|
|
3
|
+
description: A relentless interview to sharpen a plan or design. Use before committing to an approach, or on any 'grill me' trigger phrase.
|
|
4
|
+
category: engineering-method
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- Source: mattpocock/skills skills/productivity/grill-me — MIT, see THIRD_PARTY_NOTICES.md -->
|
|
9
|
+
|
|
10
|
+
Invoke the `grilling` skill and follow it.
|
|
11
|
+
|
|
12
|
+
That skill is the whole interview: design tree, frontier rounds, numbered questions with a recommended answer each. Nothing is restated here — a second copy would drift from the first.
|
|
13
|
+
|
|
14
|
+
**Use `grill-with-docs` instead whenever there is a working directory.** Same interview, but it also runs `domain-modeling`, so terminology and decisions land in `CONTEXT.md` and ADRs as they are settled rather than evaporating with the session. Reach for this one when there is no repo to write to, or when the outcome is a decision rather than a document.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: grill-with-docs
|
|
3
|
+
description: A relentless interview to sharpen a plan or design, which also builds the project's domain model — glossary and ADRs — as it goes. Use in a working directory whenever an idea needs sharpening.
|
|
4
|
+
category: engineering-method
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- Source: mattpocock/skills skills/engineering/grill-with-docs — MIT, see THIRD_PARTY_NOTICES.md -->
|
|
9
|
+
|
|
10
|
+
Invoke two skills and run them together: `grilling` and `domain-modeling`.
|
|
11
|
+
|
|
12
|
+
Neither is restated here. `grilling` supplies the interview — design tree, frontier rounds, numbered questions with a recommended answer each. `domain-modeling` supplies the discipline that runs underneath it: challenging terms against the glossary, sharpening fuzzy language, stress-testing relationships with concrete scenarios, and writing what is settled into `CONTEXT.md` and `docs/adr/` **as it crystallises**, not batched at the end.
|
|
13
|
+
|
|
14
|
+
**Prefer this over `grill-me` whenever there is a repo to leave a trail in.** The interview is identical; the difference is whether the shared understanding survives the session. Use `grill-me` when there is no working directory, or when the outcome is a decision rather than a document.
|
|
15
|
+
|
|
16
|
+
## Handing off
|
|
17
|
+
|
|
18
|
+
Grilling produces a shared understanding, not an execution plan. When the frontier is empty, pick the pipeline the work actually needs:
|
|
19
|
+
|
|
20
|
+
- `/startcycle` — a straight run with file hand-offs; the usual choice
|
|
21
|
+
- `/startcycle-graph` — when the durable `state.json`, the Reviewer repair loop and human escalation earn their overhead
|
|
22
|
+
- `/startcycle-graph-user` — a throwaway 2–4 node fan-out, nothing persistent left behind
|
|
23
|
+
|
|
24
|
+
`/bdbrainstorm` and `/bdbmediastorm` run this interview as their own first step; do not run it twice.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: grilling
|
|
3
|
+
description: Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.
|
|
4
|
+
category: engineering-method
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<!-- Source: mattpocock/skills skills/productivity/grilling — MIT, see THIRD_PARTY_NOTICES.md -->
|
|
8
|
+
|
|
9
|
+
Interview the user relentlessly until you reach a shared understanding. Map this as a **design tree**: every decision branches into the decisions that hang off it.
|
|
10
|
+
|
|
11
|
+
Work the tree in **rounds**. The **frontier** is every decision whose prerequisites are already settled: the questions you can ask _now_ without guessing at answers you haven't heard yet. Ask the whole frontier in one round: number each question and give your recommended answer. Then wait for the user's answers before the next round.
|
|
12
|
+
|
|
13
|
+
Format a round like so:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
❓ **Q1** - **<question title>**: <question body, might be multiple paragraphs, including multiple choices>
|
|
17
|
+
|
|
18
|
+
➡️ <your recommended answer>
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
❓ **Q2** - **<question title>**: <question body, might be multiple paragraphs, including multiple choices>
|
|
23
|
+
|
|
24
|
+
➡️ <your recommended answer>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Each round the user answers reshapes the tree: settled decisions push the frontier outward and unblock questions that depended on them. Recompute the frontier and ask the next round. A question whose answer depends on another question still open in this round belongs to a _later_ round, not this one.
|
|
28
|
+
|
|
29
|
+
Finding _facts_ is your job, never the user's. When a frontier question needs a fact from the environment (filesystem, tools, etc.), dispatch a sub-agent to find it; don't ask the user for anything you could look up yourself. Don't block on it: a running exploration is an unsettled prerequisite, so only the questions downstream of it wait for the sub-agent to report; ask the rest of the frontier now. The _decisions_ are the user's: put each to them and wait.
|
|
30
|
+
|
|
31
|
+
The session is done when the frontier is empty: every branch of the design tree visited, nothing left silently assumed. Do not act on it until the user confirms you have reached a shared understanding.
|
|
32
|
+
|
|
33
|
+
## In AOS
|
|
34
|
+
|
|
35
|
+
This is the primitive. Two skills compose it, and neither duplicates it:
|
|
36
|
+
|
|
37
|
+
- **`grill-me`** — the interview alone. Use without a working directory, or when the output is a decision rather than a document.
|
|
38
|
+
- **`grill-with-docs`** — the interview plus `domain-modeling`, leaving a paper trail. Prefer it whenever there is a repo to leave one in.
|
|
39
|
+
|
|
40
|
+
Grilling produces a shared understanding, not a plan. Once the frontier is empty, hand off to whichever pipeline the work actually needs — `/startcycle` for a straight run, `/startcycle-graph` when the durable record and repair loop earn their overhead, `/startcycle-graph-user` for a throwaway fan-out. `/bdbrainstorm` and `/bdbmediastorm` invoke this skill as their own interview step rather than restating it.
|
|
41
|
+
|
|
42
|
+
**Do not use the `AskUserQuestion` tool for a grilling round.** A round is numbered questions with recommended answers, answered in prose, in whatever order the user likes — several at once, or one with a correction to another. Forcing that into fixed-choice widgets loses exactly the nuance the interview exists to surface.
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: neon-postgres
|
|
3
|
-
description:
|
|
3
|
+
description: >-
|
|
4
|
+
Expert patterns for Neon serverless Postgres, branching, connection pooling,
|
|
5
|
+
and Prisma/Drizzle integration
|
|
4
6
|
category: library
|
|
5
|
-
pooling, and Prisma/Drizzle integration
|
|
6
7
|
risk: safe
|
|
7
8
|
source: vibeship-spawner-skills (Apache 2.0)
|
|
8
9
|
date_added: 2026-02-27
|