Commit 03886cfcfba1

Vincent Demeester <vincent@sbr.pm>
2026-07-30 13:10:19
chore(dots): update claude settings and agents
Added TAILWIND module instructions to AGENTS.md and updated claude code settings with new options.
1 parent a8a3b38
Changed files (2)
dots
agents
config
dots/agents/AGENTS.md
@@ -95,3 +95,88 @@ For multi-step tasks, state a brief plan with verification:
 ```
 
 Strong success criteria let you loop independently. Weak criteria ("make it work") require clarification first.
+
+<!-- lola:instructions:start -->
+<!-- lola:module:tailwind:start -->
+---
+name: tailwind
+description: >
+  Red Hat TAILWIND — Product Management skills, PMM and TMM skills, Domain 0
+  installer and program skills, and the Knowledge Registry (schema + registry/). BU-specific
+  keys and tokens live only in local config; never commit secrets.
+---
+
+# TAILWIND
+
+This repository is the **program home** for TAILWIND: skills, agents, commands, installer, registry, and documentation for PM, PMM, TMM, and Domain 0.
+
+## Layout
+
+| Path | Contents |
+| ---- | -------- |
+| **`skills/`** | All Agent Skills (`<skill-id>/SKILL.md`). PM, PMM, TMM, Domain 0, registry intake, and shared utilities. |
+| **`agents/`** | Agent definitions (`*.md`) for PM and TMM workflows. |
+| **`commands/`** | Slash-command specs (primarily PM); extend for other domains as needed. |
+| **`examples/`** | Worked examples and sample outputs. |
+| **`context/`** | Shared context files (e.g. optional `knowledge-registry-index.yaml` snapshot). |
+| **`registry/`** + **`schema/`** + **`index.yaml`** | Knowledge Registry source rows and generated index. |
+| **`scripts/`** | PM and shared automation. **`scripts/registry/`** — validate, generate index, audit. |
+| **`installer/`** | Tailwind CLI bootstrap and `tailwind` command (Domain 0). |
+| **`docs/product-management/`** | PM lifecycle, onboarding, commands, workstream categories ([README](docs/product-management/README.md)). |
+| **`docs/domain0/`** | Installer deep dives copied from Domain 0. |
+| **`docs/product-marketing/`** | PMM references (including gem-conversion-testing assets). |
+| **`docs/technical-marketing/`** | TMM (Domain 2) orientation: [overview](docs/technical-marketing/overview.md) and [index](docs/technical-marketing/README.md). |
+| **`docs/registry/`** | Knowledge Registry contributor and agent consumption guides. |
+| [**`.claude-plugin/plugin.json`**](.claude-plugin/plugin.json) | Claude Code plugin manifest (`tailwind` id → `/tailwind:` slash-command namespace). |
+| [**`.claude-plugin/marketplace.json`**](.claude-plugin/marketplace.json) | In-repo marketplace catalog; plugin source is this repo root (`./`). |
+
+## Conventions
+
+- **Human in the loop:** Treat outputs as drafts until validated against sources of record (Jira, GitLab, approved program docs). See [docs/responsible-use.md](docs/responsible-use.md).
+- **Lola:** `installer/lib/tailwind/core/lola.sh` registers a **single** module named **`tailwind`** from repo **`${TAILWIND_GIT_ORG}/${TAILWIND_GIT_REPO}`** (default `tailwind/tailwind`). Override with `TAILWIND_GIT_REPO` if your GitLab slug differs.
+- **Bootstrap:** [installer/bootstrap.sh](installer/bootstrap.sh) clones this repository (default `~/Projects/tailwind`).
+- **MCP:** Configure per [mcp/README.md](mcp/README.md) and [mcp/mcp.json.example](mcp/mcp.json.example).
+- **Sources of truth** for program intent: approved program docs in the [TAILWIND program folder (Google Drive)](https://drive.google.com/drive/folders/1sCa9_oDLZR5l4DhjGJamcU7jN6A0urUP) and maintainer channels; authoritative link metadata lives in this repo under **`registry/`** and **`index.yaml`**.
+- **Contributions:** [CONTRIBUTING.md](CONTRIBUTING.md); **maintainers:** [MAINTAINERS.md](MAINTAINERS.md).
+
+## Cursor
+
+Load [`.cursor/rules/`](.cursor/rules/) as project rules. For skills, open `skills/<skill-id>/SKILL.md` paths and @-mention in chat.
+
+## Claude Code
+
+This repository is both the **plugin** (`tailwind` in `plugin.json`) and the **marketplace catalog** (`tailwind` in `marketplace.json`): [`.claude-plugin/plugin.json`](.claude-plugin/plugin.json) + [`.claude-plugin/marketplace.json`](.claude-plugin/marketplace.json). No separate marketplace repository—users add this Git URL as a marketplace and install the plugin from it.
+
+**Local dev (no install):** from the repo root:
+
+`claude --plugin-dir .`
+
+Slash commands use the plugin namespace **`/tailwind:`** for Markdown files in [`commands/`](commands/). Skills live under [`skills/`](skills/). See [docs/runtimes.md](docs/runtimes.md) — **Claude Code**.
+
+**Install via marketplace (recommended for sharing):** with Claude Code installed, use your clone URL (HTTPS or SSH):
+
+`/plugin marketplace add https://gitlab.cee.redhat.com/tailwind/tailwind.git`
+
+`/plugin install tailwind@tailwind`
+
+Refresh catalog after upgrades: `/plugin marketplace update`. Private GitLab needs working `git` credentials (see [plugin marketplaces — private repos](https://code.claude.com/docs/en/plugin-marketplaces)).
+
+### Staying current (VPN and private GitLab)
+
+Claude Code does **not** run a special sync when your VPN connects. Updates depend on **Git reaching GitLab** and **when Claude Code refreshes** (for example on startup or when you run `/plugin marketplace update`).
+
+**Practical pattern for most users**
+
+1. Connect to **VPN** (or any network path) so `git` can reach this GitLab project without interactive prompts.
+2. Configure **non-interactive** access to private GitLab: use a **credential helper** or set **`GITLAB_TOKEN`** / **`GL_TOKEN`** in your environment (see Anthropic's [private repositories](https://code.claude.com/docs/en/plugin-marketplaces#private-repositories) table). Without this, background updates may fail silently when you are off-VPN or when no terminal is available to prompt for credentials.
+3. After VPN is up, either **restart Claude Code** or run **`/plugin marketplace update`** so the marketplace catalog and installed plugin can pick up new commits from the default branch.
+
+If you still see stale skills, run `/plugin marketplace update` again after your team publishes changes, or ask IT whether your VPN client supports a **post-connect script** that updates the local marketplace clone (an org-specific option outside Claude Code).
+
+Treat `examples/` and `docs/` as **file-backed context**—@-reference or open in the IDE.
+
+## Maintainer
+
+[MAINTAINERS.md](MAINTAINERS.md). Program coherence: Products AI CoE (per Charter / Reference).
+<!-- lola:module:tailwind:end -->
+<!-- lola:instructions:end -->
dots/config/claude/settings.json
@@ -1,5 +1,104 @@
 {
-  "alwaysThinkingEnabled": true,
+  "model": "claude-opus-4-6[1m]",
+  "hooks": {
+    "PermissionRequest": [
+      {
+        "hooks": [
+          {
+            "type": "command",
+            "command": "printf '\\a' > /dev/tty"
+          }
+        ]
+      }
+    ],
+    "PostToolUse": [
+      {
+        "hooks": [
+          {
+            "type": "command",
+            "command": "bun run ~/.config/claude/hooks/capture-tool-output.ts"
+          },
+          {
+            "type": "command",
+            "command": "bun run ~/.config/claude/hooks/update-terminal-title.ts"
+          }
+        ]
+      }
+    ],
+    "PreToolUse": [
+      {
+        "matcher": "Bash",
+        "hooks": [
+          {
+            "type": "command",
+            "command": "bun run ~/.config/claude/hooks/validate-git-push.ts"
+          }
+        ]
+      },
+      {
+        "matcher": "Write",
+        "hooks": [
+          {
+            "type": "command",
+            "command": "bun run ~/.config/claude/hooks/validate-write-path.ts"
+          }
+        ]
+      },
+      {
+        "matcher": "Edit",
+        "hooks": [
+          {
+            "type": "command",
+            "command": "bun run ~/.config/claude/hooks/validate-write-path.ts"
+          }
+        ]
+      }
+    ],
+    "SessionEnd": [
+      {
+        "hooks": [
+          {
+            "type": "command",
+            "command": "bun run ~/.config/claude/hooks/save-session.ts"
+          }
+        ]
+      }
+    ],
+    "SessionStart": [
+      {
+        "hooks": [
+          {
+            "type": "command",
+            "command": "bun run ~/.config/claude/hooks/initialize-session.ts"
+          }
+        ]
+      },
+      {
+        "matcher": "*",
+        "hooks": [
+          {
+            "type": "command",
+            "command": "bash '/home/vdemeest/.claude/hooks/herdr-agent-state.sh' session",
+            "timeout": 10
+          }
+        ]
+      }
+    ],
+    "Stop": [
+      {
+        "hooks": [
+          {
+            "type": "command",
+            "command": "printf '\\a' > /dev/tty"
+          }
+        ]
+      }
+    ]
+  },
+  "statusLine": {
+    "type": "command",
+    "command": "bash ~/.config/claude/statusline.sh"
+  },
   "enabledPlugins": {
     "bug-hunter@chmouel-cc-plugins": true,
     "codereview@chmouel-cc-plugins": true,
@@ -16,101 +115,9 @@
     "typescript-lsp@claude-plugins-official": true,
     "weekly-review@vdemeester-claude-code-plugins": true
   },
-  "hooks": {
-    "PermissionRequest": [
-      {
-        "hooks": [
-          {
-            "command": "printf '\\a' > /dev/tty",
-            "type": "command"
-          }
-        ]
-      }
-    ],
-    "PostToolUse": [
-      {
-        "hooks": [
-          {
-            "command": "bun run ~/.config/claude/hooks/capture-tool-output.ts",
-            "type": "command"
-          },
-          {
-            "command": "bun run ~/.config/claude/hooks/update-terminal-title.ts",
-            "type": "command"
-          }
-        ]
-      }
-    ],
-    "PreToolUse": [
-      {
-        "hooks": [
-          {
-            "command": "bun run ~/.config/claude/hooks/validate-git-push.ts",
-            "type": "command"
-          }
-        ],
-        "matcher": "Bash"
-      },
-      {
-        "hooks": [
-          {
-            "command": "bun run ~/.config/claude/hooks/validate-write-path.ts",
-            "type": "command"
-          }
-        ],
-        "matcher": "Write"
-      },
-      {
-        "hooks": [
-          {
-            "command": "bun run ~/.config/claude/hooks/validate-write-path.ts",
-            "type": "command"
-          }
-        ],
-        "matcher": "Edit"
-      }
-    ],
-    "SessionEnd": [
-      {
-        "hooks": [
-          {
-            "command": "bun run ~/.config/claude/hooks/save-session.ts",
-            "type": "command"
-          }
-        ]
-      }
-    ],
-    "SessionStart": [
-      {
-        "hooks": [
-          {
-            "command": "bun run ~/.config/claude/hooks/initialize-session.ts",
-            "type": "command"
-          }
-        ]
-      },
-      {
-        "hooks": [
-          {
-            "command": "bash '/home/vdemeest/.claude/hooks/herdr-agent-state.sh' session",
-            "timeout": 10,
-            "type": "command"
-          }
-        ],
-        "matcher": "*"
-      }
-    ],
-    "Stop": [
-      {
-        "hooks": [
-          {
-            "command": "printf '\\a' > /dev/tty",
-            "type": "command"
-          }
-        ]
-      }
-    ]
-  },
+  "alwaysThinkingEnabled": true,
+  "skipWorkflowUsageWarning": true,
+  "theme": "auto",
   "mcpServers": {
     "github": {
       "args": [
@@ -126,23 +133,16 @@
       "command": "mcp-server-playwright"
     }
   },
-  "model": "claude-opus-4-6[1m]",
   "skills": {
     "directories": [
       "~/.config/claude/skills"
     ],
     "enabled": true
   },
-  "skipWorkflowUsageWarning": true,
-  "statusLine": {
-    "command": "bash ~/.config/claude/statusline.sh",
-    "type": "command"
-  },
-  "theme": "auto",
   "trustedWorkspaces": [
     "/home/vincent",
     "/home/vincent/src/home",
     "/home/vincent/src/tekton-watcher",
     "/home/vincent/src/go-ci"
   ]
-}
\ No newline at end of file
+}