AgentStack
SKILL verified MIT Self-run

Onsite Propose

skill-shalintripathi-organic-os-onsite-propose · by shalintripathi

Use to turn audit findings or signals into concrete gated change proposals - "propose fixes for /pricing", /organic-os:propose.

No reviews yet
0 installs
0 views
view→install

Install

$ agentstack add skill-shalintripathi-organic-os-onsite-propose

✓ 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.

Are you the author of Onsite Propose? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Propose on-page changes (creates gated items; applies nothing)

  1. Input: audit findings, a signal reference, or a user request naming URLs.
  2. For each change, draft the exact after-state: new title (,

body=). create_item is the ONLY birth path - items are born proposed with an empty approvals list; never write a proposals/` file directly or set any other status at creation.

  1. Rebuild queue. Notify per the profile approval channel. Only send items

where core.contracts.is_notified(item) is false; call core.contracts.mark_notified(path) immediately after a successful send so re-runs never re-notify the same item:

  • in-session: present now with AskUserQuestion (approve/reject each)
  • telegram: send via core.telegram send_item (token from env file), then

poll with core.approval.process_telegram_decisions on the next run to collect replies (offset persisted automatically)

  • pr-merge: commit the proposal file on a branch, open a PR (gh pr create)
  • slack/email: post/send a summary via the available connector; approval

happens in-session or by channel reply read at the next run 4b. Image and alt-text fixes (action type: image-fix). Audit findings from the images checks - a missing or empty alt (skills/onsite-audit step 2), an imageless 500+ word explainer (step 3.3) - become one onpage-fix proposal per page whose body declares action: image-fix and carries one line per image:

  • Missing alt text: the image's src and media id (from the CMS

adapter's get_media), the current alt (empty), and the proposed alt text. Ground the proposed alt in the surrounding content: describe what the image shows for someone who cannot see it, in one sentence. Never keyword-stuffed - alt text is accessibility text first, and a keyword appears only when the image is genuinely about it.

  • Missing in-content image: reference the ce-image brief path

(skills/ce-image writes -image-brief.md) as the creation route, and name where in the post the image belongs. Creation happens through that brief, outside the apply path: apply only places a file that already exists (see the image-fix section in skills/onsite-apply), so the proposal must be executable once the asset exists, and honest about waiting until it does. Same gate as every proposal: born proposed via create_item, approved by a human, executed by onsite-apply.

  1. Record any in-session decisions immediately via the contract CLI:

PYTHONPATH="$CLAUDE_PLUGIN_ROOT/lib" python3 -m core approve --actor --channel in-session (or reject, with --note for any reason given). Never edit brain frontmatter directly. The contract CLI is the only write path for status and approvals.

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.