Commit 03886cfcfba1
Changed files (2)
dots
agents
config
claude
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
+}