upenn/littleforest-leaf-skill/littleforest-leaf

Claude Code and agent skill by upenn/littleforest-leaf-skill

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Interact with the LittleForest Leaf API to search and maintain web-registry domains, sites, pages, PDFs, data points, tags, comments, reports, exports, and bulk updates. Use for Leaf registry lookups, analysis, or user-authorized registry changes; not for Leaf PDF-remediation workflows, which require a separate workflows-scoped key.

Install

npx vskill@latest install upenn/littleforest-leaf-skill/littleforest-leaf

SKILL.md

LittleForest Leaf API

Use the bundled client for authenticated calls. It obtains the API key from LEAF_API_KEY or the macOS Keychain and never prints the credential.

bash
python3 <skill-dir>/scripts/leaf_api.py auth
python3 <skill-dir>/scripts/leaf_api.py accounts
python3 <skill-dir>/scripts/leaf_api.py search sites --search example --limit 25
python3 <skill-dir>/scripts/leaf_api.py request GET '/api/accounts/{accountId}/tags'

Per-user setup

Keep installation-specific values outside the skill directory so the folder can be packaged and shared unchanged.

On macOS, store the user's API key in Keychain with an interactive prompt:

bash
security add-generic-password -U -a littleforest-leaf-api -s codex-littleforest-leaf-api-key -w

On other platforms, provide LEAF_API_KEY through the user's environment or secret manager. Then save the non-secret account UUID in the user's external config:

bash
python3 <skill-dir>/scripts/leaf_api.py config set-account ACCOUNT_UUID

The default config path is ~/.config/littleforest-leaf/config.json. Neither the Keychain item nor this config file belongs in a shared skill archive.

Account selection

Account-specific routes contain {accountId}. Resolve it in this order:

  1. --account-id on the current command.
  2. LEAF_ACCOUNT_ID.
  3. The locally saved default from config set-account.
  4. GET /api/accounts/ when it returns exactly one account.

Registry API keys may authenticate successfully while GET /api/accounts/ returns zero accounts. If no account ID is available, ask the user once for the Leaf account UUID, then save it:

bash
python3 <skill-dir>/scripts/leaf_api.py config set-account ACCOUNT_UUID

An account UUID is not a credential. Do not put the API key in skill files, prompts, command arguments, generated reports, or logs.

Workflow

  1. Read references/api.md for endpoint routing and request shapes. For an unfamiliar or newly added endpoint, consult the live Leaf API documentation before calling it.
  2. Begin with the narrowest read that identifies exact records and IDs. Prefer server-side filters and urls_list over downloading a large registry and filtering locally.
  3. For a mutation, inspect the current records first when practical. Run the client command without --execute to show a credential-free dry run, then add --execute only when the user requested that change.
  4. Use --allow-destructive only for an explicitly requested permanent deletion. Prefer a recoverable URL archive with {"permanent": false} over hard deletion.
  5. Verify the response. For partial-result responses, report updated, skipped, not-found, and failed counts rather than calling the whole operation successful.

Do not reinterpret POST as a write automatically: Leaf uses POST for searches and reports with filter bodies. The client recognizes documented read-only POST routes. Other POST, PUT, PATCH, and DELETE requests remain dry runs unless --execute is supplied.

Registry conventions

  • Sites are subdomain/host records. For site_host, send a hostname only: no protocol, path, or trailing slash.
  • Pages and PDFs use full URLs.
  • TLD search primarily filters and sorts by name, not url.
  • Search pages/sites first when a later action needs asset IDs, such as tag assignment.
  • List data points before updating values so the name and value shape match the configured type. Dropdown values are arrays; object data points use key-value objects.
  • Use enriched search only when report rollups are needed. It is more expensive than ordinary search.
  • For large exports and bulk updates, poll the returned job until a terminal state. API-key jobs do not send completion email.

Client notes

Pass JSON inline with --data, from a file with --data-file, or from stdin with --data-file -. Use --output for HTML, ZIP, CSV, or other file responses.

request retries only read operations on transient 429/502/503/504 responses. It never retries a mutation automatically because the API does not document idempotency guarantees for registry writes.

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/upenn/littleforest-leaf-skill/littleforest-leaf/badge)](https://verified-skill.com/skills/upenn/littleforest-leaf-skill/littleforest-leaf)

Something wrong with this skill or its page? Tell us.