Agent skill

Bot Status

by espennilsen in espennilsen/pi

Generate a full operational status report for the Aivena bot.

MITAuto-check passedProductivity & Automation

Install Bot Status

skills CLI
$ npx skills add espennilsen/pi --skill bot-status -a claude-code

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

GitHub CLI
$ gh skill install espennilsen/pi bot-status --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/espennilsen/pi.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/bot-status .claude/skills/bot-status && 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
bot-status
GitHub stars
122
Token cost
~2.1k tokens
SKILL.md length
495 words
Files
1
Skills in repo
36
Repo updated
First seen
Licence
MIT

At a glance

Generate a full operational status report for the Aivena bot.

  • Works in 12 steps: Overview → Extensions → Webserver → …
  • — use this skill when: - User asks for status
  • SKILL.md covers Report Structure, Formatting Guidelines, Execution Order and Security
  • Calls sqlite3 and curl

What it does

Bot Status is an agent skill from espennilsen/pi. Generate a full operational status report for the Aivena bot. Checks all subsystems: extensions, webserver, Telegram, chat bridge, heartbeat, cron, database, memory, CRM, calendar, task management, jobs/telemetry, and storage. Triggers — use this skill when: - User asks for "status", "bot status", "system status", "operational status" - User asks "is everything running?", "how's Aivena doing?" - User says "health check", "diagnostics", "systems check" - User asks "what's the state of the bot?"

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 Productivity & Automation, covering Task management and Scheduled and recurring tasks. It works with Telegram. The licence is MIT.

When your agent uses it

  • — use this skill when: - User asks for status
  • Operational status - User asks is everything running?
  • Hows Aivena doing? - User says health check
  • Systems check - User asks whats the state of the bot?

Example prompts

  • “status”
  • “bot status”
  • “system status”
  • “/bot-status”

Workflow steps

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

  1. Overview
  2. Extensions
  3. Webserver
  4. Telegram & Chat Bridge
  5. Heartbeat
  6. Cron Jobs
  7. Database
  8. Memory System
  9. CRM
  10. Calendar
  11. Task Management (td)
  12. Jobs & Telemetry

What it can do on your machine

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

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • sqlite3
    • curl

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

  • Network

    No URLs in SKILL.md. Its commands use curl, 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

Bot Status loads about 2.1k tokens when it runs. Until then it costs about 129 tokens; SKILL.md has 495 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~129
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 passed

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.

SKILL.md

The full file from espennilsen/pi at commit 79d019b, republished under its MIT licence (© espennilsen). 495 words, ~2,106 tokens.

Download SKILL.mdSave it as .claude/skills/bot-status/SKILL.md (or your agent's skills folder).
name
bot-status
description
Generate a full operational status report for the Aivena bot. Checks all subsystems: extensions, webserver, Telegram, chat bridge, heartbeat, cron, database, memory, CRM, calendar, task management, jobs/telemetry, and storage. **Triggers — use this skill when:** - User asks for "status", "bot status", "system status", "operational status" - User asks "is everything running?", "how's Aivena doing?" - User says "health check", "diagnostics", "systems check" - User asks "what's the state of the bot?"

Bot Status Skill

Generate a comprehensive operational status report for the Aivena bot, covering every subsystem.

Report Structure

Produce all sections in order. Use status icons consistently:

  • ✅ healthy / running / OK
  • ⚠️ degraded / warning
  • ❌ down / error / missing
  • ⏳ unknown / checking
  • 📊 informational metric

1. Overview

Show:

  • Bot name, version (from package.json if available)
  • Current branch and git status (clean/dirty, uncommitted count)
  • Uptime context: when the current pi session started (from jobs tool if available)
  • Current date/time
2. Extensions

Check both extension directories for installed extensions:

  • Workspace extensions: .pi/extensions/
  • Global extensions: ~/.pi/agent/extensions/
bash
ls -1 .pi/extensions/ 2>/dev/null
ls -1 ~/.pi/agent/extensions/ 2>/dev/null

For each extension found, read its package.json to get the version:

bash
cat .pi/extensions/<name>/package.json 2>/dev/null | grep '"version"'
cat ~/.pi/agent/extensions/<name>/package.json 2>/dev/null | grep '"version"'

Report each extension with its source (workspace or global), version, and whether it's a symlink.

If an extension appears in both locations, note it — workspace takes precedence.

Format as a compact table:

Extensions (16 loaded)
  Workspace (.pi/extensions/):
    ✅ pi-calendar        0.1.0  (symlink)
    ✅ pi-channels        0.1.0  (symlink)
  Global (~/.pi/agent/extensions/):
    ✅ pi-memory           0.2.1  (symlink)
    ✅ pi-jobs             0.1.0  (symlink)
    ...
3. Webserver

Check if the pi-webserver is responding:

bash
curl -s --connect-timeout 5 --max-time 10 -o /dev/null -w "%{http_code}" http://localhost:4110/ 2>/dev/null

Report:

  • HTTP status code
  • Port (from .pi/settings.json → pi-webserver.port)
  • Whether autostart is enabled

Format:

Webserver
  ✅ Responding on port 4110 (HTTP 200)
  Autostart: enabled

If unreachable:

Webserver
  ❌ Not responding on port 4110
4. Telegram & Chat Bridge

Read .pi/settings.json → pi-channels config and report:

  • Telegram adapter: configured ✅/❌, polling enabled, allowed chat IDs
  • Chat bridge: enabled ✅/❌, max queue, timeout, max concurrent
  • Routes: list all configured routes (name → adapter → recipient)

Do NOT print the bot token — just confirm it's set (e.g., "Bot token: configured ✅").

Format:

Telegram & Chat Bridge
  Telegram adapter: ✅ configured
    Bot token: set
    Polling: enabled (30s timeout)
    Allowed chats: 1 configured
  Chat bridge: ✅ enabled
    Max queue: 5/sender, timeout: 300s, concurrency: 2
  Routes:
    ops  → telegram → chat 5991...451
    cron → telegram → chat 5991...451
5. Heartbeat

Read .pi/settings.json → pi-heartbeat config:

  • Enabled/disabled
  • Interval
  • Active hours
  • Route

Format:

Heartbeat
  ✅ Enabled — every 60min, 08:00–22:00
  Route: ops
  Autostart: enabled
6. Cron Jobs

Use the cron tool (action: list) to show all scheduled jobs:

  • Job name, schedule, enabled/disabled, last run

If no jobs:

Cron Jobs
  ⚠️ No cron jobs configured
7. Database

Check the SQLite database (managed by pi-kysely at .pi/db/aivena.db):

bash
# Size
du -sh .pi/db/aivena.db

# Tables
sqlite3 -readonly .pi/db/aivena.db "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name"

# Row counts for key tables (robust against missing tables)
for table in contacts interactions companies reminders; do
  count=$(sqlite3 -readonly .pi/db/aivena.db "SELECT CASE WHEN EXISTS (SELECT 1 FROM sqlite_master WHERE type='table' AND name='$table') THEN (SELECT COUNT(*) FROM $table) ELSE 0 END" 2>/dev/null)
  echo "$table: ${count:-0}"
done

If the database is empty (0 bytes) or has no tables, note it:

Database
  ⚠️ aivena.db exists but is empty (0 bytes)

If populated:

Database (.pi/db/aivena.db — 156KB)
  Tables: contacts, interactions, companies, reminders, ...
  CRM: 12 contacts, 34 interactions, 5 companies, 3 reminders
8. Memory System

Check memory health:

bash
# Long-term memory
wc -l < MEMORY.md 2>/dev/null
wc -c < MEMORY.md 2>/dev/null

# Daily logs
ls -1 .pi/memory/ 2>/dev/null | wc -l
ls -lt .pi/memory/ 2>/dev/null | head -3

Also use memory_read (target: long_term) to verify it's readable, and memory_read (target: list) to count daily logs.

Format:

Memory
  ✅ MEMORY.md: 142 lines, 4.2KB
  📊 Daily logs: 8 files
  Latest: 2026-02-12
Show full SKILL.md (208 more words)Show less
9. CRM

Use the crm tool to check:

  • crm search with a broad query to count contacts
  • crm upcoming to show upcoming reminders
  • crm list_companies to count companies

Format:

CRM
  ✅ Operational
  📊 15 contacts, 7 companies
  Upcoming: 2 reminders in next 7 days

Or if empty:

CRM
  ⚠️ No contacts yet
10. Calendar

Use the calendar tool:

  • calendar today — today's events
  • calendar upcoming — next 7 days

Format:

Calendar
  Today: 2 events
    10:00 — Team standup
    14:00 — Client call
  Next 7 days: 5 events

Or:

Calendar
  Today: no events
  Next 7 days: no events
11. Task Management (td)
bash
td next 2>/dev/null
td reviewable 2>/dev/null
td list --status open 2>/dev/null | head -20
td list --status in_progress 2>/dev/null | head -10
td list --status in_review 2>/dev/null | head -10

Format:

Task Management
  📊 Open: 12 issues, In progress: 2, In review: 3
  Next up: td-abc123 "Some important task" (P1)
  Reviewable: td-def456, td-ghi789
12. Jobs & Telemetry

Use the jobs tool:

  • jobs stats — overall statistics
  • jobs recent (limit: 5) — recent runs

Format:

Jobs & Telemetry
  📊 Total runs: 245, Errors: 3 (1.2%)
  Avg duration: 28.4s
  Total cost: $1.23
  Recent:
    12:05 — tui — 34s — success
    11:42 — cron — 12s — success
    11:00 — heartbeat — 45s — success
13. Storage
bash
du -sh .pi/db/aivena.db
du -sh .pi/memory/
du -sh log/
du -sh .todos/
du -sh .pi/extensions/
# Total workspace size (excluding node_modules, .git)
du -sh --exclude=node_modules --exclude=.git . 2>/dev/null || du -sh . 2>/dev/null

Format:

Storage
  aivena.db:     156KB
  Memory:        12KB
  Logs:          48KB
  Tasks (.todos): 8KB
  Extensions:    2.1MB
  Workspace:     3.4MB
14. Configuration Validation

Cross-check .pi/settings.json for:

  • All referenced adapters exist in the config
  • Routes reference valid adapters
  • Required fields are present (bot token set, ports defined)
  • No obvious misconfigurations
Config Validation
  ✅ All routes reference valid adapters
  ✅ Webserver port configured
  ✅ Bot token present
  ⚠️ pi-cron in settings but extension not found
15. Summary & Health Score

Aggregate all checks into a health score:

Health Score: 12/14 checks passing

Summary:
  Aivena is operational with 13 extensions loaded. Telegram bridge and
  webserver are responding. No cron jobs configured — consider adding
  scheduled tasks. Database is empty — CRM not yet populated.

Action Items:
  1. ⚠️ Configure cron jobs for recurring tasks
  2. ⚠️ Populate CRM with initial contacts
  3. ✅ All core systems operational

Formatting Guidelines

  • NEVER wrap output in triple-backtick code fences — use plain text with Unicode
  • Use em-dash (—) for inline descriptions
  • Keep compact but comprehensive
  • Mask sensitive data (tokens, keys) — show only "configured ✅" or first/last 4 chars
  • Status icons: ✅ ⚠️ ❌ 📊
  • Section headers in bold

Execution Order

Run all independent checks in parallel where possible (e.g., curl + sqlite + td can all run concurrently). Group tool calls that don't depend on each other.

Security

  • Never print full bot tokens, API keys, or secrets
  • Use -readonly flag for SQLite queries
  • Don't modify any state — this is a read-only diagnostic

© espennilsen, 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 skills/bot-status of espennilsen/pi.

Open the folder on GitHubat commit 79d019b

Compare with similar skills

Bot Status 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.

Bot Status compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Bot Status this skillespennilsen/pi122—~2.1kAutomated safety check: PassMIT
Task Manager0xranx/golembot323—~694Automated safety check: PassMIT
Send User MessageTinyAGI/tinyagi3.6k—~829Automated safety check: PassMIT
Cortext Self Diagnosisgrandamenium/cortextos101—~3.7kAutomated safety check: PassMIT
Cronsmixs/agent-second-brain392—~856Automated safety check: PassMIT
Actionizeinfranodus/skills119—~3.8kAutomated safety check: NotesNone

Similar skills

  • Task Manager

    0xranx/golembot

    Creates and manages scheduled tasks, cron jobs, recurring reminders, and timers via the Task HTTP API.

    323 GitHub stars~694 tokensUpdated 9 days ago
    Productivity & AutomationAuto-check passed
  • Send User Message

    TinyAGI/tinyagi

    Send a proactive message to a paired user via their channel (Discord, Telegram, or WhatsApp).

    3.6k GitHub stars~829 tokensUpdated 6 mo ago
    Productivity & AutomationAuto-check passed
  • Cortext Self Diagnosis

    grandamenium/cortextos

    Diagnose cortextOS itself when the framework misbehaves — an agent has gone silent or wedged, agents are crash-looping, Telegram or agent-to-agent messages are not arriving, crons did not fire, an…

    101 GitHub stars~3.7k tokensUpdated 15 days ago
    Productivity & AutomationAuto-check passed
  • Cron

    smixs/agent-second-brain

    Управление собственным расписанием — напоминания, рутины, периодические задачи.

    392 GitHub stars~856 tokensUpdated 2 mo ago
    Productivity & AutomationAuto-check passed
  • Actionize

    infranodus/skills

    Turn insights, findings, or research into an actionable plan with deadlines and scheduled Telegram reminders.

    119 GitHub stars~3.8k tokensUpdated 17 days ago
    Productivity & AutomationAuto-check: notes
  • Construction Business Agent

    hewi333/Mom-n-Pop-Skills

    Runs a construction company's back office by bridging Gmail, Drive and JobTread: routing email attachments to the PM system, checking project status and sending daily Telegram briefings.

    122 GitHub stars~2.3k tokensUpdated 27 days ago
    Productivity & AutomationAuto-check: notes

More from espennilsen/pi

All 36 skills in this repo
  • GitHub

    espennilsen/pi

    Interact with GitHub repos, PRs, issues, CI, and notifications via the pi-github extension commands and gh CLI.

    122 GitHub stars~1k tokensUpdated 17 days ago
    Auto-check passed
  • Skill Creator

    espennilsen/pi

    Create, review, and improve skills for Pi agents. An agent skill from espennilsen/pi.

    122 GitHub stars~2.1k tokensUpdated 17 days ago
    Auto-check passed
  • Dry Code Review

    espennilsen/pi

    Perform a comprehensive DRY (Don't Repeat Yourself) code review on a codebase.

    122 GitHub stars~1.7k tokensUpdated 17 days ago
    Auto-check passed
  • Extract Design System

    espennilsen/pi

    Reverse-engineer a design system from a live website (public URL or localhost).

    122 GitHub stars~2k tokensUpdated 17 days ago
    Auto-check passed
  • Herdr Operations

    espennilsen/pi

    A skill your agent uses when inspecting or operating Herdr sessions, workspaces, tabs, panes, agents, terminal output, agent messaging, or waits.

    122 GitHub starsUsed in 1 repo~525 tokens
    Auto-check passed
  • PDF Reader

    espennilsen/pi

    Read and extract content from PDF files — text, tables, metadata, and images.

    122 GitHub stars~1.6k tokensUpdated 17 days ago
    Auto-check passed

Works with

Questions about Bot Status

What does Bot Status do?

Generate a full operational status report for the Aivena bot. Bot Status is an agent skill from espennilsen/pi. Generate a full operational status report for the Aivena bot.

When should I use Bot Status?

Bot Status fits situations like: — use this skill when: - User asks for status; operational status - User asks is everything running?; hows Aivena doing? - User says health check; systems check - User asks whats the state of the bot?.

How do I install Bot Status in Claude Code?

Run `npx skills add espennilsen/pi --skill bot-status -a claude-code`. Or copy the skill folder (skills/bot-status in espennilsen/pi) into .claude/skills/bot-status in your project. Claude Code loads it when a task matches its description.

How do I install Bot Status in Codex?

Run `npx skills add espennilsen/pi --skill bot-status -a codex`. Or copy the skill folder (skills/bot-status in espennilsen/pi) into .agents/skills/bot-status in your project. Codex loads it when a task matches its description.

Can I use Bot Status 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 espennilsen/pi --skill bot-status -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/bot-status, .gemini/skills/bot-status, .github/skills/bot-status and .opencode/skills/bot-status in your project.

What does Bot Status need to run?

Going by SKILL.md and its folder, Bot Status needs the command-line tools its instructions call (sqlite3 and curl).

Does Bot Status access the network?

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

Is Bot Status safe to install?

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.

What licence does Bot Status use?

Bot Status 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 Bot Status use?

About 2.1k tokens (SKILL.md is roughly 8.4k 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 Bot Status?

Skills that share tags, products or a category with Bot Status: Task Manager (0xranx/golembot, 323 stars), Send User Message (TinyAGI/tinyagi, 3.6k stars), Cortext Self Diagnosis (grandamenium/cortextos, 101 stars) and Cron (smixs/agent-second-brain, 392 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Bot Status?

espennilsen (a GitHub user) maintains it in espennilsen/pi, which has 122 GitHub stars. The repository holds 36 skills in this directory. The repository was last updated on September 21, 2026.

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