plugins/avanti/skills/pulse/SKILL.md
Append a timestamped entry to today's pulse day-file in project/pulse/
npx skillsauth add acostanzo/quickstop pulseInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are the /avanti:pulse orchestrator. When the user runs /avanti:pulse <message>, append a timestamped entry to today's project/pulse/YYYY-MM-DD.md. Create the day-file from templates/pulse-day.md if it does not yet exist. Pulse is append-only — never edit prior entries.
See ${CLAUDE_PLUGIN_ROOT}/references/sdlc-conventions.md#pulse-structure for the shape.
$ARGUMENTS is the entry body — free-form markdown, one paragraph is the norm.
$ARGUMENTS is non-empty → use it verbatim as MESSAGE.$ARGUMENTS is empty or whitespace-only → use AskUserQuestion to prompt: "What should this pulse entry say?" Capture the response as MESSAGE.Do not rewrite, summarize, or clean up the message. Pulse entries are the user's voice.
Run git rev-parse --show-toplevel 2>/dev/null. Abort on failure. Store as REPO_ROOT.
PULSE_DIR = ${REPO_ROOT}/project/pulse/.
If PULSE_DIR does not exist, create it with mkdir -p via Bash and continue — the destination is deterministic and cheap to create on demand. Do not block the pulse write on missing parents.
Run date +%Y-%m-%d → TODAY.
Run date +%H:%M → NOW.
DAY_FILE = ${PULSE_DIR}${TODAY}.md.
Use Glob or Bash test -f to check whether DAY_FILE exists.
If DAY_FILE does not exist:
Read ${CLAUDE_PLUGIN_ROOT}/templates/pulse-day.md as TEMPLATE.
Render: replace TODO-DATE with ${TODAY}. Do not pre-fill a first entry from the template body — overwrite the entire template body below the header with the fresh entry in Phase 2. The template's example entry is for authors reading the template directly; once a day-file exists for real, only real entries live in it.
Concretely, the new day-file after creation is:
# Pulse — ${TODAY}
Write the day-file to DAY_FILE.
If DAY_FILE already exists, no creation is needed — proceed to Phase 2.
Read DAY_FILE as CURRENT.
The entry shape is two blank-line-separated sections:
## ${NOW}
${MESSAGE}
(Two newlines before the ## HH:MM header — one blank line separator from the prior content, one ensuring the header has space. The trailing newline of MESSAGE is fine either way; writers normalize.)
Append the new entry to CURRENT and Write the result back to DAY_FILE. Never edit or remove prior content — only grow the file.
If the file ends without a trailing newline, add one before appending. If it already has trailing whitespace, preserve it — append the new block after.
Tell the user — one short line, since pulse is meant to be frictionless:
Pulse logged: project/pulse/${TODAY}.md @ ${NOW}
If the day-file was created in this invocation, note it:
Pulse logged: project/pulse/${TODAY}.md @ ${NOW} (day-file created)
mkdir -p and proceed. The directory is deterministic and avanti's destination — cheap to create on demand.## HH:MM header; if both happen to be the same minute the reader sees two identical headers, which is accurate.documentation
Surface (and optionally fix) doc-tree drift — duplicates, dead links, stale docs, template non-compliance, missing `## Related` blocks. Read-only by default; `--apply` does mechanical fixes; `--apply-semantic` emits diffs for human review.
documentation
Full-text search over the repo's `docs/` tree (FTS5-backed). Returns ranked hits with file paths, tags, and matching snippets.
testing
Retrieval-augmented Q&A over the repo's `docs/` tree. Returns a one-paragraph synthesis plus citations (doc path + heading anchor) and per-citation corroboration verdicts. Field shape and ordering are locked at M3; M5 populates the verdicts.
documentation
Scaffold a new doc under `docs/` from a Diátaxis template, or update an existing one and bump its `updated:` date. Suggests `## Related` candidates and refreshes the FTS5 index on write.