Awesome-omni-skill acdc-badge-sniper

Plan and rank Arctic Cloud Developer Challenge (ACDC) badges and judge categories based on a team's current build and constraints. Use when asked to map a project to ACDC badges/awards, choose high-ROI targets, produce time-boxed action plans, evidence checklists, dependency/risk flags, and short judge-pitch scripts; must fetch the current badge/category requirements from the official ACDC site.

install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/devops/acdc-badge-sniper" ~/.claude/skills/diegosouzapw-awesome-omni-skill-acdc-badge-sniper && rm -rf "$T"
manifest: skills/devops/acdc-badge-sniper/SKILL.md
source content

ACDC Badge Sniper

Beginner help

This skill turns the ACDC badge list into an action plan for your team.

What it does:

  • Pulls the latest ACDC data (badges, teams, claims, rankings) into local cache files.
  • Matches your project to the best badges and judge categories.
  • Gives a short, time-boxed checklist plus evidence to collect.

What you need to provide:

  • Your team name (pick from the list during onboarding).
  • What you have built so far (2-6 bullets).
  • How much time you have left.
  • Any constraints (no admin, no external APIs, no server changes, etc.).

Output you will get:

  • Top 5 badge targets and top 1-2 judge categories.
  • For each target: why it fits, what is missing, checklist, evidence, risks, judge pitch.
  • A single “Next 60 minutes” action list.

Quick intake

Ask for missing inputs before producing a plan:

  • Team stack (M365, Power Platform, Azure, Fabric, AI/agents, DevOps, Minecraft, etc.)
  • What is built now (bullets) and what is feasible next
  • Time left or time-box (next 1-3 hours, today, rest of hackathon)
  • Constraints (no admin, no internet, no server changes, etc.)

Onboarding flow (team selection)

When the user has not specified a team name yet:

  1. Load
    data/teams.json
    and present the full list of team names.
  2. Ask the user to confirm the team name to avoid typos.
  3. Ask whether to save the selection to
    data/team_profile.json
    .
  4. If the user declines saving, keep the team name in the current response context only.

CRITICAL: Data Source URL

ACDC_BASE_URL = https://stacdc2026.blob.core.windows.net/acdc/

IMPORTANT: Use this URL exactly as written - do not modify the subdomain

stacdc2026
.

Required data sync (hackathon mode)

At the start of each run, fetch the latest data from the base URL above and save into the matching cache files:

  • {ACDC_BASE_URL}metadata.json
    data/metadata.json
  • {ACDC_BASE_URL}claims.json
    data/claims.json
  • {ACDC_BASE_URL}teams.json
    data/teams.json
  • {ACDC_BASE_URL}rankings.json
    data/rankings.json

If live fetch fails, ask whether to proceed with the cached copies. If requirements are ambiguous, quote the exact wording (short quotes) and explain a safe interpretation.

Blob cache format

These files use the blob service envelope:

{ "meta": {...}, "type": "...", "data": {...} }
. Key fields to use:

  • metadata.json:
    data.badges[]
    with
    id
    ,
    title
    ,
    description
    ,
    category
    ,
    score
    ,
    visible
  • claims.json:
    data.claims[]
    with
    badgeId
    ,
    teamId
    ,
    status
    ,
    timestamp
  • teams.json:
    data.teams[]
    with
    id
    ,
    name
    ,
    shortName
  • rankings.json:
    data.rankings[]
    with
    badgeId
    ,
    teamId
    ,
    rank
    ,
    isDraft
    ,
    timestamp

Team state (persistent)

Track team identity and claimed badges using these files:

  • data/team_profile.json
    for team metadata (name, members, stack, constraints, notes).
  • data/badges_acquired.json
    for badges already claimed.
  • data/teams.json
    for the official team list (name lookup/validation).

If the files are missing, ask the user for the minimal fields and create them on request. Only update these files when the user explicitly asks to save changes.

badges_acquired.json
can be regenerated from rankings/metadata at any time.

Suggested shapes:

  • team_profile.json:
    { "team_id": "<string>", "team_name": "<string>", "members": ["<string>"], "stack": ["<string>"], "constraints": ["<string>"], "notes": "<string>" }
  • badges_acquired.json:
    { "team_id": "<string>", "badge_ids": [<number>], "badge_titles": ["<string>"], "updated_at": "<iso8601>" }

When

data/teams.json
exists, use it to validate or suggest the team name and avoid typos.

Scoring and ranking

  • If
    config.yml
    exists, use its weights to rank targets.
  • Default formula:
    score = fit*w_fit + speed*w_speed + impact*w_impact - risk*w_risk
    .
  • Prefer fast wins early, but always include at least one "judge-magnet" category aligned to the project's strongest theme.

Workflow

  1. Sync blob cache files (metadata/claims/teams/rankings) and parse badges/categories.
  2. Load team state and already-claimed badges (if available); ask for missing fields.
  3. Map project features to badges/categories and note gaps or missing evidence.
  4. Determine already-claimed badges for the selected team by joining:
    • rankings.json (
      data.rankings[]
      ) filtered by
      teamId
      and
      isDraft == false
    • metadata.json (
      data.badges[]
      ) by
      id == badgeId
    • Optionally note pending claims from claims.json (
      data.claims[]
      ) by
      teamId
      and
      status
  5. Exclude already-claimed badges/categories from recommendations unless the user asks to revisit them.
  6. Rank top 5 badge targets and top 1-2 judge categories.
  7. For each target, provide:
    • Why it matches
    • What is missing (if anything)
    • Step-by-step checklist
    • Evidence to collect (demo steps, screenshots, repo notes, links, write-up bullets)
    • Dependencies and risks (admin access, approvals, data, settings)
    • 30-60 second judge pitch script
  8. Provide a single "Next 60 minutes" task list.

Output template

Use this structure in responses:

  1. Snapshot
  • Stack, built now, time left, constraints
  • Team name (if known)
  • Already claimed badges/categories (from rankings)
  • Pending claims (if any)
  1. Top badge targets (ranked)
  • Badge: <name>
    • Why match
    • Missing
    • Checklist (time-boxed)
    • Evidence to collect
    • Dependencies/risks
    • Judge pitch (30-60 sec)
  1. Top judge categories (ranked)
  • Category: <name>
    • Why match
    • Missing
    • Checklist (time-boxed)
    • Evidence to collect
    • Dependencies/risks
    • Judge pitch (30-60 sec)
  1. Next 60 minutes
  • Bullet list of concrete actions

Guardrails

  • Do not suggest cheating or misleading evidence.
  • Do not auto-submit or auto-post to social media.
  • Keep guidance aligned with hackathon spirit and rules.

Cross-platform compatibility

This skill is available in multiple formats:

PlatformFileUsage
Claude Code
SKILL.md
Native skill format (this file)
VS Code Copilot
copilot-instructions.md
Copy to
.github/copilot-instructions.md
or paste into Copilot Chat
ChatGPT / OpenAI
openai-system-prompt.md
Use as system prompt or Custom GPT instructions