Agent skill

External Comms

by FritzAndFriends in FritzAndFriends/SharpSite

PAO workflow for scanning, drafting, and presenting community responses with human review gate

MITAuto-check passedAgent Workflows

Install External Comms

skills CLI
$ npx skills add FritzAndFriends/SharpSite --skill external-comms -a claude-code

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

GitHub CLI
$ gh skill install FritzAndFriends/SharpSite external-comms --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/FritzAndFriends/SharpSite.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.copilot/skills/external-comms .claude/skills/external-comms && 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
external-comms
GitHub stars
145
Used in
2 other repos
Token cost
~3.1k tokens
SKILL.md length
1,019 words
Files
1
Skills in repo
18
Repo updated
First seen
Licence
MIT

At a glance

PAO workflow for scanning, drafting, and presenting community responses with human review gate

  • Works in 7 steps: Scan → Classify → Draft → …
  • Tasks that involve Human-in-the-loop approvals
  • SKILL.md covers Context, Patterns, Examples and Anti-Patterns
  • Calls gh; reaches github.com

What it does

External Comms is an agent skill from FritzAndFriends/SharpSite. PAO workflow for scanning, drafting, and presenting community responses with human review gate

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows, covering Human-in-the-loop approvals. The repository describes itself as: A basic CMS built with .NET 9 and Blazor. The licence is MIT.

When your agent uses it

  • Tasks that involve Human-in-the-loop approvals

Example prompts

  • “/external-comms”

Workflow steps

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

  1. Scan
  2. Classify
  3. Draft
  4. Present
  5. Human Action
  6. Post
  7. Audit

What it can do on your machine

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

    Shell commands in SKILL.md call:

    • gh

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • github.com

    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

External Comms loads about 3.1k tokens when it runs. Until then it costs about 27 tokens; SKILL.md has 1,019 words of instructions outside code blocks.

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

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 passed

The automated check found no risky patterns in SKILL.md.

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 FritzAndFriends/SharpSite at commit c35e5e0, republished under its MIT licence (© FritzAndFriends). 1,019 words, ~3,111 tokens.

Download SKILL.mdSave it as .claude/skills/external-comms/SKILL.md (or your agent's skills folder).
name
external-comms
description
PAO workflow for scanning, drafting, and presenting community responses with human review gate
domain
community, communication, workflow
confidence
low
source
manual (RFC #426 — PAO External Communications)

Context

Phase 1 is draft-only mode.

  • PAO scans issues and discussions, drafts responses with the humanizer skill, and presents a review table for human approval.
  • Human review gate is mandatory — PAO never posts autonomously.
  • Every action is logged to .squad/comms/audit/.
  • This workflow is triggered manually only ("PAO, check community") — no automated or Ralph-triggered activation in Phase 1.

Patterns

1. Scan

Find unanswered community items with GitHub MCP tools first, or gh issue list / gh api as fallback for issues and discussions.

  • Include open issues and discussions only.
  • Filter for items with no squad team response.
  • Limit to items created in the last 7 days.
  • Exclude items labeled squad:internal or wontfix.
  • Include discussions and issues in the same sweep.
  • Phase 1 scope is issues and discussions only — do not draft PR replies.
Discussion Handling (Phase 1)

Discussions use the GitHub Discussions API, which differs from issues:

  • Scan: gh api /repos/{owner}/{repo}/discussions --jq '.[] | select(.answer_chosen_at == null)' to find unanswered discussions
  • Categories: Filter by Q&A and General categories only (skip Announcements, Show and Tell)
  • Answers vs comments: In Q&A discussions, PAO drafts an "answer" (not a comment). The human marks it as accepted answer after posting.
  • Phase 1 scope: Issues and Discussions ONLY. No PR comments.
2. Classify

Determine the response type before drafting.

  • Welcome (new contributor)
  • Troubleshooting (bug/help)
  • Feature guidance (feature request/how-to)
  • Redirect (wrong repo/scope)
  • Acknowledgment (confirmed, no fix)
  • Closing (resolved)
  • Technical uncertainty (unknown cause)
  • Empathetic disagreement (pushback on a decision or design)
  • Information request (need more reproduction details or context)
Template Selection Guide
Signal in Issue/Discussion→ Response TypeTemplate
New contributor (0 prior issues)WelcomeT1
Error message, stack trace, "doesn't work"TroubleshootingT2
"How do I...?", "Can Squad...?", "Is there a way to...?"Feature GuidanceT3
Wrong repo, out of scope for SquadRedirectT4
Confirmed bug, no fix available yetAcknowledgmentT5
Fix shipped, PR merged that resolves issueClosingT6
Unclear cause, needs investigationTechnical UncertaintyT7
Author disagrees with a decision or designEmpathetic DisagreementT8
Need more reproduction info or contextInformation RequestT9

Use exactly one template as the base draft. Replace placeholders with issue-specific details, then apply the humanizer patterns. If the thread spans multiple signals, choose the highest-risk template and capture the nuance in the thread summary.

Confidence Classification
ConfidenceCriteriaExample
🟢 HighAnswer exists in Squad docs or FAQ, similar question answered before, no technical ambiguity"How do I install Squad?"
🟡 MediumTechnical answer is sound but involves judgment calls, OR docs exist but don't perfectly match the question, OR tone is tricky"Can Squad work with Azure DevOps?" (yes, but setup is nuanced)
🔴 Needs ReviewTechnical uncertainty, policy/roadmap question, potential reputational risk, author is frustrated/angry, question about unreleased features"When will Squad support Claude?"

Auto-escalation rules:

  • Any mention of competitors → 🔴
  • Any mention of pricing/licensing → 🔴
  • Author has >3 follow-up comments without resolution → 🔴
  • Question references a closed-wontfix issue → 🔴
3. Draft

Use the humanizer skill for every draft.

  • Complete Thread-Read Verification before writing.
  • Read the full thread, including all comments, before writing.
  • Select the matching template from the Template Selection Guide and record the template ID in the review notes.
  • Treat templates as reusable drafting assets: keep the structure, replace placeholders, and only improvise when the thread truly requires it.
  • Validate the draft against the humanizer anti-patterns.
  • Flag long threads (>10 comments) with ⚠️.
Thread-Read Verification

Before drafting, PAO MUST verify complete thread coverage:

  1. Count verification: Compare API comment count with actually-read comments. If mismatch, abort draft.
  2. Deleted comment check: Use gh api timeline to detect deleted comments. If found, flag as ⚠️ in review table.
  3. Thread summary: Include in every draft: "Thread: {N} comments, last activity {date}, {summary of key points}"
  4. Long thread flag: If >10 comments, add ⚠️ to review table and include condensed thread summary
  5. Evidence line in review table: Each draft row includes "Read: {N}/{total} comments" column
Show full SKILL.md (382 more words)Show less
4. Present

Show drafts for review in this exact format:

text
📝 PAO — Community Response Drafts
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

| # | Item | Author | Type | Confidence | Read | Preview |
|---|------|--------|------|------------|------|---------|
| 1 | Issue #N | @user | Type | 🟢/🟡/🔴 | N/N | "First words..." |

Confidence: 🟢 High | 🟡 Medium | 🔴 Needs review

Full drafts below ▼

Each full draft must begin with the thread summary line: Thread: {N} comments, last activity {date}, {summary of key points}

5. Human Action

Wait for explicit human direction before anything is posted.

  • pao approve 1 3 — approve drafts 1 and 3
  • pao edit 2 — edit draft 2
  • pao skip — skip all
  • banana — freeze all pending (safe word)
Rollback — Bad Post Recovery

If a posted response turns out to be wrong, inappropriate, or needs correction:

  1. Delete the comment:
    • Issues: gh api -X DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}
    • Discussions: gh api graphql -f query='mutation { deleteDiscussionComment(input: {id: "{node_id}"}) { comment { id } } }'
  2. Log the deletion: Write audit entry with action delete, include reason and original content
  3. Draft replacement (if needed): PAO drafts a corrected response, goes through normal review cycle
  4. Postmortem: If the error reveals a pattern gap, update humanizer anti-patterns or add a new test case

Safe word — banana:

  • Immediately freezes all pending drafts in the review queue
  • No new scans or drafts until pao resume is issued
  • Audit entry logged with halter identity and reason
6. Post

After approval:

  • Human posts via gh issue comment for issues or gh api for discussion answers/comments.
  • PAO helps by preparing the CLI command.
  • Write the audit entry after the posting action.
7. Audit

Log every action.

  • Location: .squad/comms/audit/{timestamp}.md
  • Required fields vary by action — see .squad/comms/templates/audit-entry.md Conditional Fields table
  • Universal required fields: timestamp, action
  • All other fields are conditional on the action type

Examples

These are reusable templates. Keep the structure, replace placeholders, and adjust only where the thread requires it.

Example scan command
bash
gh issue list --state open --json number,title,author,labels,comments --limit 20
Example review table
text
📝 PAO — Community Response Drafts
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

| # | Item | Author | Type | Confidence | Read | Preview |
|---|------|--------|------|------------|------|---------|
| 1 | Issue #426 | @newdev | Welcome | 🟢 | 1/1 | "Hey @newdev! Welcome to Squad..." |
| 2 | Discussion #18 | @builder | Feature guidance | 🟡 | 4/4 | "Great question! Today the CLI..." |
| 3 | Issue #431 ⚠️ | @debugger | Technical uncertainty | 🔴 | 12/12 | "Interesting find, @debugger..." |

Confidence: 🟢 High | 🟡 Medium | 🔴 Needs review

Full drafts below ▼
Example audit entry (post action)
markdown
---
timestamp: "2026-03-16T21:30:00Z"
action: "post"
item_number: 426
draft_id: 1
reviewer: "@bradygaster"
---

## Context (draft, approve, edit, skip, post, delete actions)
- Thread depth: 3
- Response type: welcome
- Confidence: 🟢
- Long thread flag: false

## Draft Content (draft, edit, post actions)
Thread: 3 comments, last activity 2026-03-16, reporter hit a preview-build regression after install.

Hey @newdev! Welcome to Squad 👋 Thanks for opening this.
We reproduced the issue in preview builds and we're checking the regression point now.
Let us know if you can share the command you ran right before the failure.

## Post Result (post, delete actions)
https://github.com/bradygaster/squad/issues/426#issuecomment-123456
T1 — Welcome
text
Hey {author}! Welcome to Squad 👋 Thanks for opening this.
{specific acknowledgment or first answer}
Let us know if you have questions — happy to help!
T2 — Troubleshooting
text
Thanks for the detailed report, {author}!
Here's what we think is happening: {explanation}
{steps or workaround}
Let us know if that helps, or if you're seeing something different.
T3 — Feature Guidance
text
Great question! {context on current state}
{guidance or workaround}
We've noted this as a potential improvement — {tracking info if applicable}.
T4 — Redirect
text
Thanks for reaching out! This one is actually better suited for {correct location}.
{brief explanation of why}
Feel free to open it there — they'll be able to help!
T5 — Acknowledgment
text
Good catch, {author}. We've confirmed this is a real issue.
{what we know so far}
We'll update this thread when we have a fix. Thanks for flagging it!
T6 — Closing
text
This should be resolved in {version/PR}! 🎉
{brief summary of what changed}
Thanks for reporting this, {author} — it made Squad better.
T7 — Technical Uncertainty
text
Interesting find, {author}. We're not 100% sure what's causing this yet.
Here's what we've ruled out: {list}
We'd love more context if you have it — {specific ask}.
We'll dig deeper and update this thread.
T8 — Empathetic Disagreement
text
We hear you, {author}. That's a fair concern.

The current design choice was driven by {reason}. We know it's not ideal for every use case.

{what alternatives exist or what trade-off was made}

If you have ideas for how to make this work better for your scenario, we'd love to hear them — open a discussion or drop your thoughts here!
T9 — Information Request
text
Thanks for reporting this, {author}!

To help us dig into this, could you share:
- {specific ask 1}
- {specific ask 2}
- {specific ask 3, if applicable}

That context will help us narrow down what's happening. Appreciate it!

Anti-Patterns

  • ❌ Posting without human review (NEVER — this is the cardinal rule)
  • ❌ Drafting without reading full thread (context is everything)
  • ❌ Ignoring confidence flags (🔴 items need Flight/human review)
  • ❌ Scanning closed issues (only open items)
  • ❌ Responding to issues labeled squad:internal or wontfix
  • ❌ Skipping audit logging (every action must be recorded)
  • ❌ Drafting for issues where a squad member already responded (avoid duplicates)
  • ❌ Drafting pull request responses in Phase 1 (issues/discussions only)
  • ❌ Treating templates like loose examples instead of reusable drafting assets
  • ❌ Asking for more info without specific requests

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

Files

Just SKILL.md in .copilot/skills/external-comms of FritzAndFriends/SharpSite.

Open the folder on GitHubat commit c35e5e0

Used in 2 other repositories

We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 2 other GitHub owners. This page covers the copy in FritzAndFriends/SharpSite, which our catalogue first saw on October 7, 2026.

Compare with similar skills

External Comms 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.

External Comms compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
External Comms this skillFritzAndFriends/SharpSite1452 repos~3.1kAutomated safety check: PassMIT
Show Me Your Work Decision Logcursor/plugins10k9 repos~1.6kAutomated safety check: PassNone
Darwin Skill Optimizeralchaincyf/darwin-skill6.2k1 repos~4.7kAutomated safety check: PassMIT
Loop Constraints Enforcercobusgreyling/loop-engineering11k1 repos~475Automated safety check: NotesMIT
Ask User QuestionMemTensor/MemOS12k—~1kAutomated safety check: PassApache-2.0
Agentmemory Forgetrohitg00/agentmemory29k—~612Automated safety check: PassApache-2.0

Similar skills

  • Official

    Keeps a TSV decision log for long or unattended agent runs, one row per decision with what, why, evidence and result, so a reviewer can check the work later.

    10k GitHub starsUsed in 9 repos~1.6k tokens
    Agent WorkflowsAuto-check passed
  • Darwin Skill Optimizer

    alchaincyf/darwin-skill

    Scores SKILL.md files on a nine-dimension rubric, then improves them in a keep-or-revert loop with independent judge agents, test prompts, git history and human checkpoints.

    6.2k GitHub starsUsed in 1 repo~4.7k tokens
    Agent WorkflowsAuto-check passed
  • Loop Constraints Enforcer

    cobusgreyling/loop-engineering

    Loads a project's loop-constraints.md before any other action and blocks pushes, edits or merges that violate the rules it defines.

    11k GitHub starsUsed in 1 repo~475 tokens
    Agent WorkflowsAuto-check: notes
  • Ask User Question

    MemTensor/MemOS

    Shows a question as a modal in the interface to clarify a task, collect a preference or get approval, since the user cannot see terminal output.

    12k GitHub stars~1k tokensUpdated 10 days ago
    Agent WorkflowsAuto-check passed
  • Agentmemory Forget

    rohitg00/agentmemory

    Deletes chosen memories from agentmemory only after showing the matches and getting an explicit yes, for privacy requests and cleanup of outdated notes.

    29k GitHub stars~612 tokensUpdated 2 days ago
    Agent WorkflowsAuto-check passed
  • Pushes an agent to keep verifying and changing approach after repeated failures, using a diagnosis line, evidence-based completion and confirmation before risky edits.

    20k GitHub stars~502 tokensUpdated 29 days ago
    Agent WorkflowsAuto-check passed

More from FritzAndFriends/SharpSite

All 18 skills in this repo
  • Architectural Proposals

    FritzAndFriends/SharpSite

    How to write comprehensive architectural proposals that drive alignment before code is written

    145 GitHub starsUsed in 2 repos~1.6k tokens
    Auto-check passed
  • Client Compatibility

    FritzAndFriends/SharpSite

    Platform detection and adaptive spawning for CLI vs VS Code vs other surfaces

    145 GitHub starsUsed in 2 repos~1.3k tokens
    Auto-check passed
  • Distributed Mesh

    FritzAndFriends/SharpSite

    How to coordinate with squads on different machines using git as transport

    145 GitHub starsUsed in 2 repos~3.1k tokens
    Auto-check passed
  • Docs Standards

    FritzAndFriends/SharpSite

    Microsoft Style Guide + Squad-specific documentation patterns

    145 GitHub starsUsed in 2 repos~567 tokens
    Auto-check passed
  • Economy Mode

    FritzAndFriends/SharpSite

    Shifts Layer 3 model selection to cost-optimized alternatives when economy mode is active.

    145 GitHub starsUsed in 2 repos~1.3k tokens
    Auto-check passed
  • Gh Auth Isolation

    FritzAndFriends/SharpSite

    Safely manage multiple GitHub identities (EMU + personal) in agent workflows

    145 GitHub starsUsed in 2 repos~1.6k tokens
    Auto-check: notes

Categories

Questions about External Comms

What does External Comms do?

PAO workflow for scanning, drafting, and presenting community responses with human review gate. External Comms is an agent skill from FritzAndFriends/SharpSite.

When should I use External Comms?

External Comms fits situations like: tasks that involve Human-in-the-loop approvals.

How do I install External Comms in Claude Code?

Run `npx skills add FritzAndFriends/SharpSite --skill external-comms -a claude-code`. Or copy the skill folder (.copilot/skills/external-comms in FritzAndFriends/SharpSite) into .claude/skills/external-comms in your project. Claude Code loads it when a task matches its description.

How do I install External Comms in Codex?

Run `npx skills add FritzAndFriends/SharpSite --skill external-comms -a codex`. Or copy the skill folder (.copilot/skills/external-comms in FritzAndFriends/SharpSite) into .agents/skills/external-comms in your project. Codex loads it when a task matches its description.

Can I use External Comms 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 FritzAndFriends/SharpSite --skill external-comms -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/external-comms, .gemini/skills/external-comms, .github/skills/external-comms and .opencode/skills/external-comms in your project.

What does External Comms need to run?

Going by SKILL.md and its folder, External Comms needs the command-line tools its instructions call (gh).

Does External Comms access the network?

SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is External Comms safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does External Comms use?

External Comms 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 External Comms use?

About 3.1k tokens (SKILL.md is roughly 12k 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 External Comms?

Skills that share tags, products or a category with External Comms: Show Me Your Work Decision Log (cursor/plugins, 10k stars), Darwin Skill Optimizer (alchaincyf/darwin-skill, 6.2k stars), Loop Constraints Enforcer (cobusgreyling/loop-engineering, 11k stars) and Ask User Question (MemTensor/MemOS, 12k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains External Comms?

FritzAndFriends (a GitHub organization) maintains it in FritzAndFriends/SharpSite, which has 145 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on April 30, 2026.

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