AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Update Readme

skill-caidanw-skills-update-readme · by caidanw

Use when adding, removing, or renaming a skill in this repository to keep the Available Skills table in README.md current.

No reviews yet
0 installs
19 views
0.0% view→install

Install

$ agentstack add skill-caidanw-skills-update-readme

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-caidanw-skills-update-readme)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Update Readme? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Update README

After any change to a skill's name, description, or directory, regenerate the Available Skills table by running the script below from the repo root:

bash update-readme/update-readme.sh

When to run

  • After adding a new skill directory
  • After editing the name or description field in any SKILL.md
  • After renaming or deleting a skill directory

Script

Save as update-readme/update-readme.sh:

#!/usr/bin/env bash
# Regenerates the Available Skills table in README.md from SKILL.md frontmatters.
# Usage: bash update-readme/update-readme.sh
set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
README="$ROOT/README.md"

skills_file=$(mktemp)
table_file=$(mktemp)
trap 'rm -f "$skills_file" "$table_file"' EXIT

# Parse name and description from a SKILL.md file.
# Handles inline values (quoted or unquoted) and block scalars (> and >-).
# Outputs: 
parse_skill() {
    awk '
    BEGIN { cnt=0; name=""; desc=""; in_desc=0 }
    /^---[[:space:]]*$/ {
        cnt++
        if (cnt == 2) exit
        next
    }
    cnt != 1 { next }
    /^description:[[:space:]]*[>|]/ { in_desc=1; next }
    /^description:[[:space:]]/ {
        in_desc=0
        val=$0; sub(/^description:[[:space:]]*/, "", val)
        gsub(/^[[:space:]"]+|[[:space:]"]+$/, "", val)
        desc=val
        next
    }
    /^name:[[:space:]]/ {
        in_desc=0
        val=$0; sub(/^name:[[:space:]]*/, "", val)
        gsub(/^[[:space:]"]+|[[:space:]"]+$/, "", val)
        name=val
        next
    }
    /^[a-zA-Z]/ { in_desc=0; next }
    in_desc && /^[[:space:]]/ {
        line=$0; sub(/^[[:space:]]+/, "", line)
        desc=(desc=="" ? line : desc " " line)
        next
    }
    END { printf "%s\t%s\n", name, desc }
    ' "$1"
}

# Return the first sentence of a string (up to the first .!?).
first_sentence() {
    awk '{
        if (match($0, /^[^.!?]+[.!?]/))
            print substr($0, RSTART, RLENGTH)
        else
            print $0
        exit
    }'  dir  description
for dir in "$ROOT"/*/; do
    skill_file="$dir/SKILL.md"
    [ -f "$skill_file" ] || continue

    result=$(parse_skill "$skill_file")
    name=$(printf '%s' "$result" | cut -f1)
    desc=$(printf '%s' "$result" | cut -f2-)

    if [ -z "$name" ] || [ -z "$desc" ]; then
        continue
    fi

    short=$(first_sentence "$desc")
    dirname=$(basename "$dir")
    printf '%s\t%s\t%s\n' "$name" "$dirname" "$short" >> "$skills_file"
done

# Sort case-insensitively by skill name
sort -f -o "$skills_file" "$skills_file"

# Build the Markdown table
printf '| Skill | Description |\n| --- | --- |\n' > "$table_file"
while IFS=$'\t' read -r name dirname desc; do
    printf '| [`%s`](./%s/) | %s |\n' "$name" "$dirname" "$desc" >> "$table_file"
done  0) print line; skip=1; next }
    // { skip=0 }
    !skip { print }
' "$README" > "$README.tmp" && mv "$README.tmp" "$README"

count=$(wc -l < "$skills_file" | tr -d ' ')
echo "✓ Updated README.md with $count skills"

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.