Agent skill

Logs Stop

by n0an in n0an/VivaDicta

Stop whichever VivaDicta log capture is active, then summarize it.

MITAuto-check: notesMobile

Install Logs Stop

skills CLI
$ npx skills add n0an/VivaDicta --skill logs-stop -a claude-code

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

GitHub CLI
$ gh skill install n0an/VivaDicta logs-stop --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/n0an/VivaDicta.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/logs-stop .claude/skills/logs-stop && 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
logs-stop
GitHub stars
131
Token cost
~1.6k tokens
SKILL.md length
764 words
Files
2
Skills in repo
20
Repo updated
First seen
Licence
MIT

At a glance

Stop whichever VivaDicta log capture is active, then summarize it.

  • Works in 3 steps: detect → stop and summarize each active tier → report
  • Mobile work in your project
  • SKILL.md covers Step 1: detect, Step 2: stop and summarize…, Step 3: report and Read levels skeptically, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Logs Stop is an agent skill from n0an/VivaDicta. Stop whichever VivaDicta log capture is active, then summarize it. Detects the tier itself; takes an optional filter.

Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).

It sits in Mobile. The repository describes itself as: iOS & watchOS speech-to-text app with AI voice keyboard, on-device RAG, and chat with your notes - powered by Apple Foundation Models, WhisperKit, NVIDIA Parakeet, and 20+ AI…. The licence is MIT.

When your agent uses it

  • Mobile work in your project

Example prompts

  • “/logs-stop”

Workflow steps

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

  1. detect
  2. stop and summarize each active tier
  3. report

What it can do on your machine

Read from SKILL.md and the folder at commit b141304. 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

    No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).

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

  • Network

    No URLs in SKILL.md.

    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

Logs Stop loads about 1.6k tokens when it runs. Until then it costs about 32 tokens; SKILL.md has 764 words of instructions outside code blocks.

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

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.

  • NoteRuns commands with sudoSKILL.md:126
    sudo is needed - that reads as "go and do this in a terminal somewhere", and the

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 n0an/VivaDicta at commit b141304, republished under its MIT licence (© n0an). 764 words, ~1,604 tokens.

Download SKILL.mdSave it as .claude/skills/logs-stop/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
logs-stop
description
Stop whichever VivaDicta log capture is active, then summarize it. Detects the tier itself; takes an optional filter.
disable-model-invocation
true

logs-stop

Stop the active capture(s) started by logs-start and summarize the result. Never ask the user which tier is running - detect it.

Step 1: detect

logs-start writes a marker per live tier naming the process that streams: logs/.sim-capture.pid and logs/.device-capture.pid. Read those - do not go looking for processes.

bash
for tier in sim device; do
  PIDFILE="logs/.${tier}-capture.pid"
  [ -f "$PIDFILE" ] || continue
  PID=$(cat "$PIDFILE" 2>/dev/null)
  if [ -n "$PID" ] && kill -0 "$PID" 2>/dev/null; then
    echo "$tier ACTIVE (pid $PID)"
  else
    echo "$tier marker stale (pid ${PID:-none} gone), removing"
    rm -f "$PIDFILE"
  fi
done
[ -f llmtemp/.device-log-start-time ] && echo "structured PENDING: $(cat llmtemp/.device-log-start-time)"

structured has no process - a marker file is the only evidence. If nothing is found, say so plainly and stop; do not summarize a stale file as if it were fresh.

Never detect or stop a capture by process pattern

The obvious-looking check is wrong and it is destructive:

bash
pgrep -f "simctl spawn.*log stream"     # matches ANY simulator log stream on the machine

That pattern is not specific to this repo, this app, or this capture. It matches an unrelated log stream any other session has running, reports sim ACTIVE when no VivaDicta capture exists, and the matching pkill then kills that session's stream. A capture the user never started must never be stopped, so the marker is the only handle.

Two related traps, if you ever debug this by hand:

  • pgrep -a is not a macOS flag. pgrep here accepts only [-Lfilnoqvx], yet -a exits 0 and prints a bogus pid rather than erroring. Use plain -f.
  • grep for a pattern matches your own pipeline. ps -A | grep "log stream" counts the greps themselves, because both carry the string in their own argv. Add | grep -v grep, or check the marker instead.

Step 2: stop and summarize each active tier

Kill the streaming process the marker names. Do not kill the wrapper script: launch_*.sh is the parent of the stream, and killing the parent reparents the stream to PID 1, where it keeps appending to the log file with nothing left to stop it. Killing the stream is enough - the script's tee then reaches EOF and the script exits, clearing its own marker.

sim
bash
PID=$(cat logs/.sim-capture.pid)
ps -p "$PID" -o command= | grep -q "log stream" || echo "refusing: pid $PID is not a log stream"
kill "$PID"
LOGFILE=$(ls -t logs/sim-*.log 2>/dev/null | head -1)
device
bash
PID=$(cat logs/.device-capture.pid)
ps -p "$PID" -o command= | grep -q "devicectl device process launch" || echo "refusing: pid $PID is not a device capture"
kill "$PID"
LOGFILE=$(ls -t logs/device-*.log 2>/dev/null | head -1)

The ps check is there because a pid can be reused. If the command line does not match, say so and stop rather than killing an unrelated process.

The capture ends with App terminated due to signal 15 - that is this skill's kill, not a crash. Say so rather than reporting it as a failure.

Show full SKILL.md (409 more words)Show less
structured

Check staleness first. If llmtemp/.device-log-start-time is more than a few hours old, show its timestamp and ask before collecting - the marker may be left over from an abandoned session, and collecting is expensive.

The script needs interactive sudo, so the user must run it themselves. Root is a hard requirement inside /usr/bin/log, not a choice this script makes - verified 2026-09-05, running it unprivileged fails outright and writes nothing:

$ /usr/bin/log collect --device-udid <udid> --start <time> --output out.logarchive
log: Must be root to collect logs from attached device

There is no flag or output-path that avoids it, so do not try to drop the sudo. (Local-only log collect, with no --device-udid, is the case that can run unprivileged - the device path talks to attached hardware.)

Note also that log is a shell builtin in Anton's zsh, so a bare log show ... typed interactively fails with too many arguments. Use /usr/bin/log. The script is unaffected: it runs under #!/bin/bash.

Hand them a line they can paste, not a description of one. In Claude Code, a prompt starting with ! runs in the session and its output lands back in the conversation, so the whole handoff is one copy-paste. Print exactly this, on its own line, as the last thing before you stop:

! ./scripts/collect_device_logs.sh

Do not write it as a bare ./scripts/collect_device_logs.sh and explain that sudo is needed - that reads as "go and do this in a terminal somewhere", and the result then has to be pasted back by hand. The ! prefix is the part that makes it work in place, and it is not obvious unless it is shown.

Then wait for confirmation and read the newest export:

bash
LOGFILE=$(ls -t logs/device_*.txt 2>/dev/null | head -1)

It also writes logs/vivadicta_device_*.logarchive, reopenable in Console.app. Do not claim the logs exist before the user confirms the script finished. Remove the marker files once collection succeeds so the next logs-stop does not re-trigger it.

Step 3: report

Per file: path, size, modified time, line count, and level counts.

bash
wc -l "$LOGFILE"
grep -oE '\[(INFO|DEBUG|ERROR|WARNING|NOTICE)\]' "$LOGFILE" | sort | uniq -c | sort -rn

Then apply $ARGUMENTS:

$ARGUMENTSShow
(empty)Last 20 lines, plus any error/fault lines
errorsError and fault lines
warningsWarning lines
allThe whole file
anything elseTreat as a search term; show matching lines

Read levels skeptically

Several call sites log success messages at [ERROR] - for example AudioPrewarmManager.swift:490 ("Input tap installed") and the AppGroupCoordinator state-update lines, where all 30 "errors" in one capture were routine status changes. Report what a line says, not what its level claims. A raw error count is misleading on its own.

Notes

  • Logs are never deleted here; this only stops streams and summarizes.
  • logs/ is gitignored.

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

Files

SKILL.md and 1 other file in .agents/skills/logs-stop of n0an/VivaDicta.

  • SKILL.md
  • agents/openai.yaml

Open the folder on GitHubat commit b141304

Compare with similar skills

Logs Stop 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.

Logs Stop compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Logs Stop this skilln0an/VivaDicta131—~1.6kAutomated safety check: NotesMIT
React Native Best Practicesvercel-labs/openreview1.7k17 repos~1.1kAutomated safety check: PassMIT
Swiftui Protwostraws/SwiftUI-Agent-Skill5.1k2 repos~1.5kAutomated safety check: PassMIT
Kortix Brandkortix-ai/suna20k—~4kAutomated safety check: PassCustom licence
Ip As LogoKartikLabhshetwar/better-shot2.4k1 repos~4.3kAutomated safety check: PassMIT
Compose Multiplatform Patternsmonta-app/ocpp-emulator1805 repos~2kAutomated safety check: PassApache-2.0

Similar skills

  • React Native Best Practices

    vercel-labs/openreview

    Official

    A prioritized rule set for React Native and Expo apps covering list performance, animation, navigation, UI patterns, state, rendering, monorepos and configuration.

    1.7k GitHub starsUsed in 17 repos~1.1k tokens
    MobileAuto-check passed
  • Swiftui Pro

    twostraws/SwiftUI-Agent-Skill

    Comprehensively reviews SwiftUI code for best practices on modern APIs, maintainability, and performance.

    5.1k GitHub starsUsed in 2 repos~1.5k tokens
    MobileAuto-check passed
  • Kortix Brand

    kortix-ai/suna

    Load FIRST for anything that carries the Kortix look or voice: product or mobile UI, copy of any kind, decks, social, images, email, CLI output, anything with the logo, and reviews of these.

    20k GitHub stars~4k tokensUpdated today
    MobileAuto-check passed
  • Ip As Logo

    KartikLabhshetwar/better-shot

    Generate extremely simple, cute, personified square character images with rounded heavy forms, two purposeful character colors, one solid background color, and a dominant lower-corner composition.

    2.4k GitHub starsUsed in 1 repo~4.3k tokens
    MobileAuto-check passed
  • Compose Multiplatform Patterns

    monta-app/ocpp-emulator

    Compose Multiplatform and Jetpack Compose patterns for KMP projects — state management, navigation, theming, performance, and platform-specific UI.

    180 GitHub starsUsed in 5 repos~2k tokens
    MobileAuto-check passed
  • Aso Appstore Screenshots

    adamlyttleapps/claude-skill-aso-appstore-screenshots

    Generate high-converting App Store screenshots by analyzing your app's codebase, discovering core benefits, and creating ASO-optimized screenshot images using Nano Banana Pro.

    1.8k GitHub starsUsed in 1 repo~9.6k tokens
    MobileAuto-check passed

More from n0an/VivaDicta

All 20 skills in this repo
  • Swiftdata Pro

    n0an/VivaDicta

    Writes, reviews, and improves SwiftData code using modern APIs and best practices.

    131 GitHub starsUsed in 1 repo~930 tokens
    Auto-check passed
  • iOS Simulator Skill

    n0an/VivaDicta

    21 production-ready scripts for iOS app testing, building, and automation.

    131 GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check passed
  • Asc Metadata Sync

    n0an/VivaDicta

    Sync and validate App Store metadata and localizations with asc, including legacy metadata format migration.

    131 GitHub starsUsed in 1 repo~1k tokens
    Auto-check passed
  • Asc Aso Rankings

    n0an/VivaDicta

    Pull current keyword rankings from Astro MCP, compare against the previous rankings check, and save a new rankings file to the vault.

    131 GitHub stars~985 tokensUpdated 3 days ago
    Auto-check passed
  • Coverage Report

    n0an/VivaDicta

    Measure VivaDicta test code coverage from the terminal. An agent skill from n0an/VivaDicta.

    131 GitHub stars~1.2k tokensUpdated 3 days ago
    Auto-check passed
  • Loc Report

    n0an/VivaDicta

    Count Swift lines of code across the VivaDicta codebase and refresh the production-vs-test history chart.

    131 GitHub stars~825 tokensUpdated 3 days ago
    Auto-check passed

Categories

Questions about Logs Stop

What does Logs Stop do?

Stop whichever VivaDicta log capture is active, then summarize it. Logs Stop is an agent skill from n0an/VivaDicta. Stop whichever VivaDicta log capture is active, then summarize it.

When should I use Logs Stop?

Logs Stop fits situations like: mobile work in your project.

How do I install Logs Stop in Claude Code?

Run `npx skills add n0an/VivaDicta --skill logs-stop -a claude-code`. Or copy the skill folder (.agents/skills/logs-stop in n0an/VivaDicta) into .claude/skills/logs-stop in your project. Claude Code loads it when a task matches its description.

How do I install Logs Stop in Codex?

Run `npx skills add n0an/VivaDicta --skill logs-stop -a codex`. Or copy the skill folder (.agents/skills/logs-stop in n0an/VivaDicta) into .agents/skills/logs-stop in your project. Codex loads it when a task matches its description.

Can I use Logs Stop 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 n0an/VivaDicta --skill logs-stop -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/logs-stop, .gemini/skills/logs-stop, .github/skills/logs-stop and .opencode/skills/logs-stop in your project.

What does Logs Stop need to run?

SKILL.md names no scripts, command-line tools or credentials: Logs Stop is instructions for the agent only.

Does Logs Stop access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Logs Stop safe to install?

Our automated static check of SKILL.md found notes only (runs commands with sudo), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Logs Stop use?

Logs Stop 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 Logs Stop use?

About 1.6k tokens (SKILL.md is roughly 6.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 Logs Stop?

Skills that share tags, products or a category with Logs Stop: React Native Best Practices (vercel-labs/openreview, 1.7k stars), Swiftui Pro (twostraws/SwiftUI-Agent-Skill, 5.1k stars), Kortix Brand (kortix-ai/suna, 20k stars) and Ip As Logo (KartikLabhshetwar/better-shot, 2.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Logs Stop?

n0an (a GitHub user) maintains it in n0an/VivaDicta, which has 131 GitHub stars. The repository holds 20 skills in this directory. The repository was last updated on October 5, 2026.

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