Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/greppable/greppable-cc-plugin/statusgit clone --depth 1 https://github.com/greppable/greppable-cc-pluginWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00027 | $0.05706 |
| Opus 5 | $0.00014 | $0.02853 |
| Sonnet 5 | $0.00005 | $0.01141 |
| Haiku 4.5 | $0.00003 | $0.00571 |
Grade A, and why
status scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 465 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/greppable:status — Health Check
Check GDL configuration, platform compatibility, and artifact health for the current project. Before running any bash blocks, tell the user: "Gathering status information..."
Run the bash block below, then present the results as a condensed summary table (one row per category: Platform, Root, Mode, Version, Artifacts, Memory, Duplicates, Hooks, Setup). Keep it tight — the user wants a quick health check, not verbose output.
Status Dump
# Resolve plugin root with fallback (MUST be before any source calls)
PLUGIN_ROOT="${CLAUDE_PLUGIN_ROOT:-$(ls -d ~/.claude/plugins/cache/greppable*/greppable/[0-9]* 2>/dev/null | sort -V | tail -1)}"
if [[ -z "$PLUGIN_ROOT" || ! -d "$PLUGIN_ROOT" ]]; then
echo "Error: Cannot resolve plugin root (CLAUDE_PLUGIN_ROOT=${CLAUDE_PLUGIN_ROOT:-unset}, cache lookup failed)." >&2
echo " Reinstall greppable: claude plugins install greppable" >&2
exit 1
fi
source "${PLUGIN_ROOT}/lib/session-context.sh"
RESOLVED_ROOT=$(gdl_find_root ".")
PROJECT_CFG="$RESOLVED_ROOT/.claude/greppable.local.md"
GLOBAL_CFG="$HOME/.claude/greppable.local.md"
echo "=== GDL Status ==="
echo ""
echo "## Platform"
OS=$(uname -s)
case "$OS" in
MINGW*|MSYS*) echo " OS: Windows (Git Bash)" ;;
Darwin*) echo " OS: macOS" ;;
Linux*) echo " OS: Linux" ;;
*) echo " OS: $OS" ;;
esac
echo " Bash: $BASH_VERSION"
if command -v node &>/dev/null; then
echo " Node.js: $(node --version)"
else
echo " Node.js: not found (needed for session2gdlm)"
fi
CLAUDE_PATH="not found"
if command -v claude &>/dev/null; then
CLAUDE_PATH=$(command -v claude)
elif command -v claude.exe &>/dev/null; then
CLAUDE_PATH=$(command -v claude.exe)
fi
echo " Claude CLI: $CLAUDE_PATH"
echo ""
echo "## Root Resolution"
echo " CWD: $(pwd)"
echo " Resolved root: $RESOLVED_ROOT"
if [[ -f "$RESOLVED_ROOT/.claude/greppable.local.md" ]]; then
echo " Method: config-walk (.claude/greppable.local.md found)"
elif git -C "$RESOLVED_ROOT" rev-parse --show-toplevel &>/dev/null; then
echo " Method: git-root fallback"
else
echo " Method: cwd-fallback (no config or git repo found)"
fi
echo ""
echo "## Configuration"
if [[ -f "$GLOBAL_CFG" ]]; then
echo " Global config: $GLOBAL_CFG"
echo " gdl_root: $(gdl_config_val "$GLOBAL_CFG" gdl_root)"
else
echo " Global config: not found"
fi
if [[ -f "$PROJECT_CFG" ]]; then
echo " Project config: $PROJECT_CFG (wins on conflict)"
echo " gdl_root: $(gdl_config_val "$PROJECT_CFG" gdl_root)"
else
echo " Project config: not found"
fi
echo ""
echo "## Hook Health"
HOOKS_JSON="${PLUGIN_ROOT}/hooks/hooks.json"
SESSION_START="${PLUGIN_ROOT}/hooks/session-start.sh"
HOOK_MJS="${PLUGIN_ROOT}/scripts/session2gdlm/dist/hook.mjs"
[[ -f "$HOOKS_JSON" ]] && echo " hooks.json: OK" || echo " hooks.json: MISSING"
[[ -f "$SESSION_START" ]] && echo " session-start.sh: OK" || echo " session-start.sh: MISSING"
[[ -f "$HOOK_MJS" ]] && echo " hook.mjs (bundle): OK" || echo " hook.mjs (bundle): MISSING"
echo ""
PLUGIN_JSON="${PLUGIN_ROOT}/.claude-plugin/plugin.json"
if [[ -f "$PLUGIN_JSON" ]]; then
VERSION=$(grep '"version"' "$PLUGIN_JSON" | head -1 | sed 's/.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/')
echo "## Version: $VERSION"
else
echo "## Version: unknown"
fi
echo ""
echo "## Scope Check"
PLUGIN_CACHE_BASE=$(dirname "${PLUGIN_ROOT}" 2>/dev/null)
if [[ -d "$PLUGIN_CACHE_BASE" ]]; then
INSTALLED_VERSIONS=()
INSTALLED_PATHS=()
while IFS= read -r ver_dir; do
[[ -z "$ver_dir" ]] && continue
ver_pj="$ver_dir/.claude-plugin/plugin.json"
if [[ -f "$ver_pj" ]]; then
ver=$(grep '"version"' "$ver_pj" | head -1 | sed 's/.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/')
INSTALLED_VERSIONS+=("$ver")
INSTALLED_PATHS+=("$ver_dir")
fi
done <<< "$(find "$PLUGIN_CACHE_BASE" -maxdepth 1 -mindepth 1 -type d 2>/dev/null)"
if (( ${#INSTALLED_VERSIONS[@]} > 1 )); then
echo " Multiple installations detected:"
for i in "${!INSTALLED_VERSIONS[@]}"; do
active=""
[[ "${INSTALLED_PATHS[$i]}" == "${PLUGIN_ROOT}" ]] && active=" <- active"
echo " v${INSTALLED_VERSIONS[$i]} at ${INSTALLED_PATHS[$i]}${active}"
done
elif (( ${#INSTALLED_VERSIONS[@]} == 1 )); then
echo " v${INSTALLED_VERSIONS[0]} -- single installation, no conflicts"
else
echo " Could not detect installed versions"
fi
else
echo " Plugin cache not accessible"
fi
echo ""
SCOPE=""
if [[ -f "$PROJECT_CFG" ]]; then
SCOPE="project"
elif [[ -f "$GLOBAL_CFG" ]]; then
SCOPE="global"
fi
echo "## Scope"
if [[ -z "$SCOPE" ]]; then
echo " Config: unconfigured (auto-enabled if artifacts exist)"
else
echo " Config: $SCOPE scope"
fi
echo ""
echo "## Artifacts"
GDL_ROOT_VAL=$(gdl_config_val "$PROJECT_CFG" gdl_root 2>/dev/null)
[[ -z "$GDL_ROOT_VAL" ]] && GDL_ROOT_VAL=$(gdl_config_val "$GLOBAL_CFG" gdl_root 2>/dev/null)
[[ -z "$GDL_ROOT_VAL" ]] && GDL_ROOT_VAL="docs/gdl"
ARTIFACT_DIR="$RESOLVED_ROOT/$GDL_ROOT_VAL"
echo " Root: $ARTIFACT_DIR"
gdl_scan_artifacts "$ARTIFACT_DIR"
echo ""
echo "## Memory Extraction"
MEMORY_VAL=""
if [[ -f "$PROJECT_CFG" ]]; then
MEMORY_VAL=$(gdl_config_val "$PROJECT_CFG" memory 2>/dev/null)
fi
if [[ -z "$MEMORY_VAL" && -f "$GLOBAL_CFG" ]]; then
MEMORY_VAL=$(gdl_config_val "$GLOBAL_CFG" memory 2>/dev/null)
fi
SESSION_GDLM_COUNT=$(find "$ARTIFACT_DIR" -name '*.session.gdlm' 2>/dev/null | wc -l | tr -d ' ')
if [ "$MEMORY_VAL" = "true" ]; then
if (( SESSION_GDLM_COUNT > 0 )); then
echo " Memory extraction: working ($SESSION_GDLM_COUNT .session.gdlm files)"
else
echo " Memory extraction: enabled but not yet active (no .session.gdlm files)"
fi
else
echo " Memory extraction: disabled (memory: ${MEMORY_VAL:-unset}) -- toggle with /greppable:memory"
fi
echo ""
echo "## Duplicate Detection"
DUPES=$(find "$RESOLVED_ROOT" -type d -name "gdl" -path "*/docs/gdl" 2>/dev/null | grep -v "$GDL_ROOT_VAL" || true)
if [[ -n "$DUPES" ]]; then
echo " WARNING: GDL artifact directories found outside resolved root:"
echo "$DUPES" | sed 's/^/ /'
else
echo " No duplicate artifact directories found"
fi
echo ""
echo "## Setup Status"
if [[ -f "$PROJECT_CFG" ]] || [[ -f "$RESOLVED_ROOT/.claude/greppable.project.md" ]]; then
echo " Onboarding: complete"
else
echo " Onboarding: not done -- Run /greppable:onboard"
fi
if find "$ARTIFACT_DIR" \( -name '*.gdlc' -o -name '*.gdls' \) -print -quit 2>/dev/null | grep -q .; then
echo " Discovery: complete"
else
echo " Discovery: not done -- Run /greppable:discover"
fi
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 465 lines · 27 tokens per session scan A 5853ee30f767
status is a command published in the GitHub repository greppable/greppable-cc-plugin (3 stars, last pushed 4mo ago), licensed MIT. It adds 27 tokens to every session and 5,706 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
rb-ask
Ask a question about the current project's codebase via the repobrain knowledge hub. / 通过 repobrain 知识库询问当前项目代码。.
rb-refresh
Rebuild the repobrain project knowledge base after significant changes. / 在重要改动后重建 repobrain 项目知识库。.
rp-build-cli
Build with rp-cli context builder → chat → implement.
call-graph
Trace callers, callees, or paths using the call graph.
index
Index the codebase for semantic search.
search
Search codebase by meaning using semantic search.