Agent skill

Hk Local Logs

by deepklarity in deepklarity/harness-kit

Inspect and debug errors via logs across the harness-kit monorepo.

MITAuto-check: notesDevelopment

Install Hk Local Logs

skills CLI
$ npx skills add deepklarity/harness-kit --skill hk-local-logs -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install deepklarity/harness-kit hk-local-logs --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/deepklarity/harness-kit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/hk-local-logs .claude/skills/hk-local-logs && rm -rf skills-src

Use ~/.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/

Facts

Skill name
hk-local-logs
GitHub stars
100
Token cost
~2.1k tokens
SKILL.md length
624 words
Files
1
Skills in repo
18
Repo updated
First seen
Licence
MIT

At a glance

Inspect and debug errors via logs across the harness-kit monorepo.

  • Works in 4 steps: Resolve paths → Read the log → Search mode (--search) → …
  • Someone mentions a 500 error
  • SKILL.md covers Quick Reference, Arguments, Log Locations and Execution, plus 2 more sections
  • Calls git, python and python3

What it does

Hk Local Logs is an agent skill from deepklarity/harness-kit. Inspect and debug errors via logs across the harness-kit monorepo. Reads the right log file based on the error layer — backend, frontend, celery, odin CLI, or odin task execution. Use this skill whenever someone mentions a 500 error, a stack trace, a crash, 'check the logs', 'what went wrong', a service not starting, celery task failures, or any runtime error. Also triggers on: 'getting 500', 'backend error', 'celery error', 'odin failed', 'check logs', 'tail logs', 'debug this error', or /hk-local-logs.

Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Background jobs, Debugging and Monorepo tooling. The repository describes itself as: A kit for building with AI agents and also the engineering patterns around it. The licence is MIT.

When your agent uses it

  • Someone mentions a 500 error
  • What went wrong
  • A service not starting
  • Celery task failures

Example prompts

  • “check the logs”
  • “what went wrong”
  • “getting 500”
  • “/hk-local-logs”

Requirements

  • Python 3
  • Pre-approved tools (allowed-tools): Bash, Read, Grep

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Resolve paths
  2. Read the log
  3. Search mode (--search)
  4. Auto-detect mode (no layer specified)

What it can do on your machine

Read from SKILL.md and the folder at commit 87305cd. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read
    • Grep

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • python
    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Hk Local Logs loads about 2.1k tokens when it runs. Until then it costs about 131 tokens; SKILL.md has 624 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~131
When it runs · the whole SKILL.md, loaded when a task matches
~2.1k

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.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read, Grep

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.

SKILL.md

The full file from deepklarity/harness-kit at commit 87305cd, republished under its MIT licence (© deepklarity). 624 words, ~2,113 tokens.

Download SKILL.mdSave it as .claude/skills/hk-local-logs/SKILL.md (or your agent's skills folder).
name
hk-local-logs
description
Inspect and debug errors via logs across the harness-kit monorepo. Reads the right log file based on the error layer — backend, frontend, celery, odin CLI, or odin task execution. Use this skill whenever someone mentions a 500 error, a stack trace, a crash, 'check the logs', 'what went wrong', a service not starting, celery task failures, or any runtime error. Also triggers on: 'getting 500', 'backend error', 'celery error', 'odin failed', 'check logs', 'tail logs', 'debug this error', or /hk-local-logs.
allowed-tools
Bash, Read, Grep
argument-hint
[backend | frontend | celery | odin | task <id>] [--lines N] [--search <pattern>]

/hk-local-logs — Log Inspector & Error Debugger

Read the right log for the right problem, from the right place. No more guessing which of 5 log locations to check.

Quick Reference

SymptomLog to checkCommand
500 error, API brokenBackend/hk-local-logs backend
UI not loading, build errorFrontend/hk-local-logs frontend
Task not executing, queue stuckCelery/hk-local-logs celery
odin plan/odin exec failedOdin/hk-local-logs odin
Specific task execution traceTask/hk-local-logs task <id>
Migration error on startupBackend/hk-local-logs backend --search migrate
Don't know where the error isAuto/hk-local-logs (no args)

Arguments

Parse $ARGUMENTS to extract:

  • layer (optional): backend, frontend, celery, odin, or task
  • id (required for task): task ID or prefix
  • --lines N (optional, default 50): how many lines from the end to show
  • --search <pattern> (optional): grep for a pattern in the log

If no layer is specified, run auto-detect mode — check all logs for recent errors.

Log Locations

All paths are relative to REPO_ROOT (use git rev-parse --show-toplevel).

LayerFileFormatNotes
backend.dev-logs/backend.logPlain textDjango runserver stdout/stderr
frontend.dev-logs/frontend.logPlain textVite dev server output
celery.dev-logs/celery.logPlain textCelery worker + beat
backend-apptaskit/taskit-backend/logs/taskit.logStructured plain textApp-level logging, [timestamp] LEVEL [file:line] - msg
backend-detailtaskit/taskit-backend/logs/taskit_detail.logPlain textFull tracebacks (check here for exception details)
odin-runs.odin/logs/run_*.jsonl (in working dir)JSON linesStructured orchestration log
odin-app.odin/logs/odin.log (in working dir)Plain textOdin CLI logging
odin-detail.odin/logs/odin_detail.log (in working dir)Plain textFull tracebacks from odin (odin logs debug)
task-output.odin/logs/task_<id>.out (in working dir)Plain textRaw agent stdout for a task (odin logs <id> -f)

Execution

Step 1: Resolve paths
bash
REPO_ROOT=$(git rev-parse --show-toplevel)

Odin logs live in the working directory where odin was run, not the repo root. The standard working dir is $REPO_ROOT/odin/temp_test_dir/. Check both.

Step 2: Read the log

Based on the layer argument:

backend (or auto-detect first choice for 500 errors)

Check two locations — .dev-logs/backend.log has startup/crash output, taskit-backend/logs/taskit_detail.log has full tracebacks:

bash
# Recent backend output (startup errors, migration failures)
tail -n $LINES "$REPO_ROOT/.dev-logs/backend.log"

# Full tracebacks from app logging (the real errors)
tail -n $LINES "$REPO_ROOT/taskit/taskit-backend/logs/taskit_detail.log"

When debugging 500s: The taskit_detail.log has full exception tracebacks. The .dev-logs/backend.log has Django's console error output. Check both — the detail log is usually more informative.

Also check if the migration is current:

bash
cd "$REPO_ROOT/taskit/taskit-backend" && python manage.py showmigrations tasks 2>&1 | grep '\[ \]'

If unapplied migrations exist, that's likely the cause.

frontend
bash
tail -n $LINES "$REPO_ROOT/.dev-logs/frontend.log"

Look for: TypeScript errors, Vite build failures, module resolution errors.

celery
bash
tail -n $LINES "$REPO_ROOT/.dev-logs/celery.log"

Look for: Task exception, WorkerLostError, broker connection failures.

Show full SKILL.md (247 more words)Show less
odin

Check the most recent structured run log:

bash
# Find latest run log
ODIN_WD="$REPO_ROOT/odin/temp_test_dir"
LATEST=$(ls -t "$ODIN_WD/.odin/logs/run_"*.jsonl 2>/dev/null | head -1)

# Show structured entries (formatted)
if [ -n "$LATEST" ]; then
    tail -n $LINES "$LATEST" | python3 -c "
import sys, json
for line in sys.stdin:
    try:
        e = json.loads(line.strip())
        ts = e.get('timestamp','')[:19]
        action = e.get('action','')
        tid = (e.get('task_id','') or '')[:8]
        agent = e.get('agent','')
        dur = e.get('duration_ms','')
        meta = e.get('metadata','')
        print(f'{ts}  {action:<20s}  {tid:<10s}  {agent:<8s}  {dur}ms  {meta}')
    except: pass
"
fi

# Also check odin detail log for tracebacks
tail -n $LINES "$ODIN_WD/.odin/logs/odin_detail.log" 2>/dev/null
task <id>

Show the raw agent output for a specific task execution:

bash
ODIN_WD="$REPO_ROOT/odin/temp_test_dir"

# Find the task output file (supports prefix matching)
TASK_FILE=$(ls "$ODIN_WD/.odin/logs/task_${ID}"*.out 2>/dev/null | head -1)

if [ -n "$TASK_FILE" ]; then
    tail -n $LINES "$TASK_FILE"
else
    echo "No output file found for task $ID"
    echo "Available task logs:"
    ls "$ODIN_WD/.odin/logs/task_"*.out 2>/dev/null | sed 's/.*task_/  task_/'
fi

Also check the backend's per-task execution logs:

bash
ls "$REPO_ROOT/taskit/taskit-backend/logs/"*"${ID}"*.log 2>/dev/null | while read f; do
    echo "=== $(basename "$f") ==="
    tail -n $LINES "$f"
done

If --search <pattern> is provided, grep across the relevant log(s):

bash
grep -n -i "$PATTERN" "$LOG_FILE" | tail -n $LINES

For auto-detect with search, grep across ALL logs:

bash
grep -rn -i "$PATTERN" "$REPO_ROOT/.dev-logs/" "$REPO_ROOT/taskit/taskit-backend/logs/taskit_detail.log" 2>/dev/null | tail -n 30
Step 4: Auto-detect mode (no layer specified)

When no layer is given, scan all logs for recent errors:

  1. Check .dev-logs/backend.log for recent Traceback, Error, 500
  2. Check taskit-backend/logs/taskit_detail.log for recent exceptions
  3. Check .dev-logs/celery.log for Task exception or ERROR
  4. Check odin detail log for recent tracebacks
  5. Report which layer(s) have errors, show the most recent one
bash
REPO_ROOT=$(git rev-parse --show-toplevel)
echo "=== Scanning all logs for errors ==="

for log_label_file in \
    "backend:.dev-logs/backend.log" \
    "backend-detail:taskit/taskit-backend/logs/taskit_detail.log" \
    "celery:.dev-logs/celery.log" \
    "odin:odin/temp_test_dir/.odin/logs/odin_detail.log"; do
    label="${log_label_file%%:*}"
    file="$REPO_ROOT/${log_label_file#*:}"
    if [ -f "$file" ]; then
        count=$(grep -c -iE "error|traceback|exception|500" "$file" 2>/dev/null || echo 0)
        if [ "$count" -gt 0 ]; then
            echo ""
            echo "--- $label ($count error lines) ---"
            grep -iE "error|traceback|exception|500" "$file" | tail -5
        fi
    fi
done

Then show the full traceback from whichever log has the most recent error.

Handoff to other skills

  • If the error points to a specific task (task ID visible), suggest: /hk-local-diagnose task <id> for structured diagnostic data (status, metadata, comments, dependency chain)
  • If the error points to a spec run, suggest: /hk-local-diagnose spec <id>
  • This skill reads raw logs; /hk-local-diagnose reads structured Django ORM data. Use both together for full picture.

Error handling

If $ARGUMENTS is empty, run auto-detect mode (scan all logs).

If a log file doesn't exist, say so and suggest:

  • "Is the dev server running? Start it with ./dev.sh"
  • "No odin logs found — has odin plan or odin exec been run from this directory?"

If .dev-logs/ doesn't exist at all:

  • "The .dev-logs/ directory doesn't exist. Run ./dev.sh to start the dev stack, which creates logs there."

© deepklarity, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/hk-local-logs of deepklarity/harness-kit.

Open the folder on GitHubat commit 87305cd

Compare with similar skills

Hk Local Logs 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.

Hk Local Logs compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Hk Local Logs this skilldeepklarity/harness-kit100—~2.1kAutomated safety check: NotesMIT
Premortemjoetawil7/first-pass98—~2.5kAutomated safety check: NotesMIT
Code Review Graph Navigatorhandsontable/handsontable22k—~939Automated safety check: PassCustom licence
Diagnose Backend BugQoderAI/better-harness2.4k—~1.2kAutomated safety check: PassMIT
Vscode MCP Architecturetjx666/vscode-mcp105—~1.5kAutomated safety check: PassCustom licence
Developmentweb-infra-dev/rstest505—~2.8kAutomated safety check: PassMIT

Similar skills

  • Premortem

    joetawil7/first-pass

    Run before writing or changing code for any feature, bug fix or refactor that touches data, jobs, money, outside services or user-facing behaviour.

    98 GitHub stars~2.5k tokensUpdated today
    DevelopmentAuto-check: notes
  • Code Review Graph Navigator

    handsontable/handsontable

    Queries a pre-built, Tree-sitter-based code graph of the whole monorepo instead of grepping call chains, for exploring, debugging, refactoring or reviewing code.

    22k GitHub stars~939 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Diagnose Backend Bug

    QoderAI/better-harness

    Diagnose a bounded backend or multi-service failure from GitHub Issues, Jira, Aone, user-provided exports, logs, traces, responses, stack traces, or job records.

    2.4k GitHub stars~1.2k tokensUpdated 3 days ago
    Backend & APIsAuto-check passed
  • Vscode MCP Architecture

    tjx666/vscode-mcp

    VSCode MCP Bridge project architecture — current monorepo layout, IPC/EventDispatcher flow, per-workspace socket discovery, MCP/CLI adapters, tool filtering, and VSCode extension services.

    105 GitHub stars~1.5k tokensUpdated 2 mo ago
    DevelopmentAuto-check passed
  • Development

    web-infra-dev/rstest

    Feature and bug-fix development checklist for the Rstest monorepo.

    505 GitHub stars~2.8k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Official

    How to instrument PostHog's own Metrics product from PostHog-owned code — record counters, gauges, and histograms that land in posthog.metrics, the same way customers do.

    40k GitHub stars~2.2k tokensUpdated yesterday
    DevelopmentAuto-check passed

More from deepklarity/harness-kit

All 18 skills in this repo
  • Hk Skill Creator

    deepklarity/harness-kit

    Create new skills, modify and improve existing skills, and measure skill performance.

    100 GitHub stars~3.2k tokensUpdated 2 mo ago
    Auto-check: notes
  • Hk Arch Audit

    deepklarity/harness-kit

    Run comprehensive agent-native architecture review with scored principles.

    100 GitHub stars~1.1k tokensUpdated 2 mo ago
    Auto-check: notes
  • Hk Mock First

    deepklarity/harness-kit

    Mock-first, layer-by-layer feature development. An agent skill from deepklarity/harness-kit.

    100 GitHub stars~3.9k tokensUpdated 2 mo ago
    Auto-check: notes
  • Hk Autonomy Audit

    deepklarity/harness-kit

    Audit whether an AI agent can autonomously close the loop on problems in a given area — from discovering a symptom to verifying a fix — without human intervention.

    100 GitHub stars~2.5k tokensUpdated 2 mo ago
    Auto-check: notes
  • Hk Breadcrumb Creator

    deepklarity/harness-kit

    Traces a workflow end-to-end through the harness-kit monorepo and creates a breadcrumb analysis doc in docs/breadcrumbanalysis/.

    100 GitHub stars~3k tokensUpdated 2 mo ago
    Auto-check: notes
  • Hk Changelog

    deepklarity/harness-kit

    Generate changelog entries from git diffs, prepend to CHANGELOG.md, and optionally commit + PR.

    100 GitHub stars~1.6k tokensUpdated 2 mo ago
    Auto-check: notes

Questions about Hk Local Logs

What does Hk Local Logs do?

Inspect and debug errors via logs across the harness-kit monorepo. Hk Local Logs is an agent skill from deepklarity/harness-kit. Inspect and debug errors via logs across the harness-kit monorepo.

When should I use Hk Local Logs?

Hk Local Logs fits situations like: someone mentions a 500 error; what went wrong; A service not starting; celery task failures.

How do I install Hk Local Logs in Claude Code?

Run `npx skills add deepklarity/harness-kit --skill hk-local-logs -a claude-code`. Or copy the skill folder (.claude/skills/hk-local-logs in deepklarity/harness-kit) into .claude/skills/hk-local-logs in your project. Claude Code loads it when a task matches its description.

How do I install Hk Local Logs in Codex?

Run `npx skills add deepklarity/harness-kit --skill hk-local-logs -a codex`. Or copy the skill folder (.claude/skills/hk-local-logs in deepklarity/harness-kit) into .agents/skills/hk-local-logs in your project. Codex loads it when a task matches its description.

Can I use Hk Local Logs in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add deepklarity/harness-kit --skill hk-local-logs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/hk-local-logs, .gemini/skills/hk-local-logs, .github/skills/hk-local-logs and .opencode/skills/hk-local-logs in your project.

What does Hk Local Logs need to run?

Going by SKILL.md and its folder, Hk Local Logs needs the command-line tools its instructions call (git, python and python3). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Bash, Read, Grep.

Does Hk Local Logs access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Hk Local Logs safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Hk Local Logs use?

Hk Local Logs is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Hk Local Logs use?

About 2.1k tokens (SKILL.md is roughly 8.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Hk Local Logs?

Skills that share tags, products or a category with Hk Local Logs: Premortem (joetawil7/first-pass, 98 stars), Code Review Graph Navigator (handsontable/handsontable, 22k stars), Diagnose Backend Bug (QoderAI/better-harness, 2.4k stars) and Vscode MCP Architecture (tjx666/vscode-mcp, 105 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Hk Local Logs?

deepklarity (a GitHub organization) maintains it in deepklarity/harness-kit, which has 100 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on July 15, 2026.

Source: deepklarity/harness-kit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.