Dbt Databricks PR Ready
databricks/dbt-databricks
A skill your agent uses for an open dbt-databricks pull request, including your own PR or a fork PR, to assess merge readiness and optionally repair selected gaps on the PR head branch.
File sentinel that monitors the working directory for changes and marker comments, then auto-triggers appropriate skills.
$ npx skills add SethGammon/Citadel --skill watch -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install SethGammon/Citadel watch --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/SethGammon/Citadel.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/watch .claude/skills/watch && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "watch" agent skill from https://github.com/SethGammon/Citadel/tree/main/skills/watch into .claude/skills/watch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "watch", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/SethGammon/Citadel/tree/main/skills/watchType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add SethGammon/Citadel --skill watch -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install SethGammon/Citadel watch --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SethGammon/Citadel.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/watch .agents/skills/watch && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "watch" agent skill from https://github.com/SethGammon/Citadel/tree/main/skills/watch into .agents/skills/watch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "watch", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add SethGammon/Citadel --skill watch -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install SethGammon/Citadel watch --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SethGammon/Citadel.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/watch .cursor/skills/watch && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "watch" agent skill from https://github.com/SethGammon/Citadel/tree/main/skills/watch into .cursor/skills/watch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "watch", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/SethGammon/Citadel.git --path skills/watch--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add SethGammon/Citadel --skill watch -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install SethGammon/Citadel watch --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SethGammon/Citadel.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/watch .gemini/skills/watch && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "watch" agent skill from https://github.com/SethGammon/Citadel/tree/main/skills/watch into .gemini/skills/watch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "watch", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install SethGammon/Citadel watchInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add SethGammon/Citadel --skill watch -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/SethGammon/Citadel.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/watch .github/skills/watch && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "watch" agent skill from https://github.com/SethGammon/Citadel/tree/main/skills/watch into .github/skills/watch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "watch", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add SethGammon/Citadel --skill watch -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install SethGammon/Citadel watch --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SethGammon/Citadel.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/watch .opencode/skills/watch && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "watch" agent skill from https://github.com/SethGammon/Citadel/tree/main/skills/watch into .opencode/skills/watch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "watch", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
watchFile sentinel that monitors the working directory for changes and marker comments, then auto-triggers appropriate skills.
Watch is an agent skill from SethGammon/Citadel. File sentinel that monitors the working directory for changes and marker comments, then auto-triggers appropriate skills. Poll-based via git diff against the last scan commit. Writes intake items for batch processing and routes marker actions through /do. Use for automatic reactions to file changes; do NOT use for one-off inspection or tasks needing human judgment per file.
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `__benchmarks__/marker-dedup-two-scans.md`).
It sits in Data & Analytics, covering Data pipelines and ETL. It works with Git. The repository describes itself as: The operating layer for Claude Code + OpenAI Codex: persistent project memory, intent routing, safety hooks, cost telemetry, and parallel agent fleets. The licence is MIT.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e41ff1d. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Watch loads about 2.9k tokens when it runs. Until then it costs about 96 tokens; SKILL.md has 1,236 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from SethGammon/Citadel at commit e41ff1d, republished under its MIT licence (© SethGammon). 1,236 words, ~2,882 tokens.
.claude/skills/watch/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Use when the user wants automatic reactions to file changes or marker comments (@citadel:).
Do NOT use for one-off file inspection or tasks that need human judgment per file.
Use when: running a file sentinel that triggers a skill or command automatically when watched paths change. Don't use when: monitoring CI status on a PR (use /pr-watch); running a one-shot verification check (use /verify).
/watch start does NOT call CronCreate by default. Only pass --remote
to use Anthropic's routine system, and only after explicit user confirmation.
CronCreate counts against the 15 routine runs / 24h cap — at the default
5-minute interval a watch exhausts the quota in under an hour.
/watch start (no --remote flag)CronCreate. Leave cronId: null in state.status: "watching".Watch state created: .planning/watch-state.json
Baseline: {commit hash, first 7 chars}
To start real-time watching, run in a separate terminal:
npm run watch:local
For cloud-persistent polling (machine off, user away):
/watch start --remote (uses CronCreate, counts against 15/day cap)/watch start --remoteOnly when --remote is explicitly passed:
CronCreate, which counts against your 15 routine
runs / 24h quota. At a 5-minute interval this exhausts the quota in under
an hour. Continue? (y/N)"CronCreate.| Command | Behavior |
|---|---|
/watch start | Default: create state, prompt user to run npm run watch:local |
/watch start --remote | Use CronCreate polling (counts against 15/day quota — requires confirmation) |
/watch start --interval {N}m | Set poll interval for --remote mode (default: 5m) |
/watch stop | Stop watching, tear down cron |
/watch status | Show watch state, last scan time, pending actions |
/watch scan | Run a single scan now (manual trigger) |
.planning/watch-state.json if it existsstatus is "watching":/watch stop first, then continuegit rev-parse HEAD to get the current commit hashlastScanTime, skip commit-based diffing)lastScanCommitCronCreate:
interval: "{N}m" (default: 5m)
command: "/watch scan"Save the cron ID in the state file.
Write .planning/watch-state.json:
{
"status": "watching",
"lastScanCommit": "abc1234",
"lastScanTime": null,
"interval": "5m",
"cronId": "{id from step 3 or null}",
"pendingActions": {},
"processedMarkers": {},
"stats": {
"scansRun": 0,
"markersFound": 0,
"intakeItemsCreated": 0,
"skillsDispatched": 0
}
}Watch started.
Interval: every {N}m
Baseline: {commit hash, first 7 chars}
State: .planning/watch-state.json.planning/watch-state.json. If missing or not "watching": "No watch is active."CronDelete: {cronId} — if cronId is missing or deletion fails, continue."status": "stopped", "cronId": null. Preserve all other fields.Watch stopped.
Scans completed: {stats.scansRun}
Markers found: {stats.markersFound}
Intake items created: {stats.intakeItemsCreated}
Skills dispatched: {stats.skillsDispatched}.planning/watch-state.json missing: "No watch configured. Use /watch start to begin."pendingActions non-empty, list each: [{action}] {file}:{line} -- {description}.planning/watch-state.jsonlastScanCommit from git rev-parse HEAD and status: "watching".Git mode (primary):
git diff --name-only {lastScanCommit} HEAD (committed changes)git diff --name-only (unstaged) and git diff --name-only --cached (staged)Fallback mode (no git):
find . -newer {timestamp_file} -type fnode_modules/, .git/, .planning/, dist/, build/If no files changed: update lastScanTime and stats.scansRun, exit early.
Search changed files for:
| Pattern | Languages |
|---|---|
// @citadel: {action} {description} | JS, TS, Go, Rust, C, Java |
# @citadel: {action} {description} | Python, Shell, YAML, Ruby |
/* @citadel: {action} {description} */ | CSS, multi-line C-style |
<!-- @citadel: {action} {description} --> | HTML, Markdown |
Action-to-skill mapping:
| Action | Skill |
|---|---|
review | /review |
test | /test-gen |
fix | /systematic-debugging |
document | /doc-gen |
refactor | /refactor |
todo | intake item |
Unknown actions become intake items with the action preserved as metadata.
Deduplication: Every marker gets a stable identity hash: sha256 over {file path}, {action}, and the normalized marker text (trimmed, internal whitespace collapsed), joined with NUL separators and truncated to 16 hex chars. Line numbers are excluded, so the hash survives line shifts. processedMarkers is a map keyed by this hash with {file, action, firstSeen, lastSeen}; pendingActions uses the same hash keys. Both maps are pruned past 500 entries by dropping the oldest lastSeen. Markers whose hash is already in processedMarkers are skipped.
| File pattern | Auto-action |
|---|---|
*.test.*, *.spec.*, __tests__/* | Queue: "run tests" intake item |
*.md in docs/ or project root | Queue: "doc staleness check" intake item |
src/**/*.ts, src/**/*.tsx | Queue: "changed source" intake item |
package.json, tsconfig.json | Queue: "config change" intake item (high priority) |
For each new marker:
/do {action} in {file} at line {line}: {description}processedMarkers, increment stats.skillsDispatchedBatch limit: Dispatch at most 5 per scan. Queue overflow in pendingActions.
Filename: watch-{action}-{file slug}-{epoch ms}.md in .planning/intake/
---
title: "{action} {file}:{line}"
status: pending
priority: normal
target: {file path}
source: watch
marker_hash: {16-char marker hash}
---
Marker comment found at {file}:{line}:
`{raw marker line}`
{description, if any}Before writing, skip the item if the marker hash is already in processedMarkers, or if any existing .planning/intake/*.md carries a matching marker_hash in its frontmatter. Every new intake item records its marker_hash so future scans (and concurrent processes) can detect it.
lastScanCommit: git rev-parse HEADlastScanTime: current ISO timestampstats.scansRun, stats.markersFoundpendingActions and processedMarkersManual scan:
Scan complete.
Files changed: {N}
Markers found: {new} ({total} total)
Actions dispatched: {N} (batch limit: 5)
Intake items: {N} written to .planning/intake/
Pending actions: {N}Cron poll: silent.
.planning/intake/ for /autopilot./do — never invokes skills directly./daemon can start a watch alongside a campaign..planning/ missing: Create on first scan.
Not a git repo: Fall back to timestamp detection; warn once.
No files changed: Update stats, exit silently.
Unknown action: Treat as intake item, preserve raw action.
Deleted file: Skip marker scanning; write intake item noting deletion.
Large diff (100+ files): Cap at 50 per scan, queue rest.
Binary files: Skip during marker scanning.
Corrupted state: Reset to defaults, preserve processedMarkers if readable.
CronCreate not available: Warn and suggest manual /watch scan.
Scan overlap: Scans serialize through a lock directory (.planning/watch-state.json.lock, acquired via atomic mkdir with ~10 retries at 100ms). Each scan records scanStartedAt and scanPid in state under the lock, and holds the lock across the state read-modify-write and intake writes. A scan that cannot acquire the lock and finds another scan started under 60 seconds ago logs a skip notice and exits cleanly. A lock older than 30 seconds (by mtime) is treated as stale and removed.
Marker removed: Stale processedMarkers entries age out via the 500-entry oldest-lastSeen prune.
Disclosure: "Starting file watch on [paths]. Triggers [skill] on change. Stop with Ctrl+C."
Reversibility: amber — runs sentinel that triggers other skills on file change; triggered skills may modify files; stop with Ctrl+C and run /watch stop
Trust gates:
/watch start: Output confirmation block. No HANDOFF./watch stop: Output stop summary with lifetime stats./watch scan (manual): Output scan report with counts./watch scan (cron): Silent./watch status: Output current state.© SethGammon, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in skills/watch of SethGammon/Citadel.
Open the folder on GitHubat commit e41ff1d
Watch next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Watch this skillSethGammon/Citadel | 922 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Dbt Databricks PR Readydatabricks/dbt-databricks | 380 | — | ~2.8k | Automated safety check: Pass | Apache-2.0 | |
| Monitor With HaolemeHaolemeApp/Haoleme | 157 | — | ~1.3k | Automated safety check: Pass | AGPL-3.0 | |
| Veomni ReviewByteDance-Seed/VeOmni | 2.2k | — | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Crawl4AI Web Scrapingsmallnest/goclaw | 598 | 1 repos | ~2.5k | Automated safety check: Pass | MIT | |
| Glue 09 10 Migrationaws-samples/aws-glue-samples | 1.5k | — | ~2.4k | Automated safety check: Pass | MIT-0 |
databricks/dbt-databricks
A skill your agent uses for an open dbt-databricks pull request, including your own PR or a fork PR, to assess merge readiness and optionally repair selected gaps on the PR head branch.
HaolemeApp/Haoleme
Selectively monitor important long-running or resource-intensive commands with Haoleme by prefixing them with hao, so status, output, and completion notifications sync to the mobile app.
ByteDance-Seed/VeOmni
Pre-PR code review gate. An agent skill from ByteDance-Seed/VeOmni.
smallnest/goclaw
Scrapes sites, handles JavaScript-heavy pages and extracts structured data with Crawl4AI, through its crwl CLI or Python SDK, including schema-based extraction without an LLM.
aws-samples/aws-glue-samples
Upgrade an AWS Glue ETL job from Glue version 0.9 or 1.0 to Glue 4.0.
aws-samples/aws-glue-samples
Migrate a legacy AWS Glue development endpoint to a Glue interactive session, following the official AWS migration checklist.
SethGammon/Citadel
Creates new skills from the user's repeating patterns. An agent skill from SethGammon/Citadel.
SethGammon/Citadel
Cross-drive storage audit and cleanup. An agent skill from SethGammon/Citadel.
SethGammon/Citadel
Bounded foreground repetition for the current session. An agent skill from SethGammon/Citadel.
SethGammon/Citadel
GitHub issue and PR investigator. An agent skill from SethGammon/Citadel.
SethGammon/Citadel
Autonomous multi-session campaign agent. An agent skill from SethGammon/Citadel.
SethGammon/Citadel
Parallel campaign orchestrator. An agent skill from SethGammon/Citadel.
Works with
Categories
File sentinel that monitors the working directory for changes and marker comments, then auto-triggers appropriate skills. Watch is an agent skill from SethGammon/Citadel. File sentinel that monitors the working directory for changes and marker comments, then auto-triggers appropriate skills.
Watch fits situations like: appropriate skills; automatic reactions to file changes; do NOT use for one-off inspection; tasks needing human judgment per file.
Run `npx skills add SethGammon/Citadel --skill watch -a claude-code`. Or copy the skill folder (skills/watch in SethGammon/Citadel) into .claude/skills/watch in your project. Claude Code loads it when a task matches its description.
Run `npx skills add SethGammon/Citadel --skill watch -a codex`. Or copy the skill folder (skills/watch in SethGammon/Citadel) into .agents/skills/watch in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add SethGammon/Citadel --skill watch -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/watch, .gemini/skills/watch, .github/skills/watch and .opencode/skills/watch in your project.
Going by SKILL.md and its folder, Watch needs the command-line tools its instructions call (git and npm). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use git and npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Watch is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Watch: Dbt Databricks PR Ready (databricks/dbt-databricks, 380 stars), Monitor With Haoleme (HaolemeApp/Haoleme, 157 stars), Veomni Review (ByteDance-Seed/VeOmni, 2.2k stars) and Crawl4AI Web Scraping (smallnest/goclaw, 598 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
SethGammon (a GitHub user) maintains it in SethGammon/Citadel, which has 922 GitHub stars. The repository holds 48 skills in this directory. The repository was last updated on October 1, 2026.
Source: SethGammon/Citadel on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.