{
 "name": "GhostBus Hub catalog",
 "description": "Every skill listed on the GhostBus Hub, with its price, full file list, and the bundle hash published on its listing. A match between a delivered bundle and its hash here is the record of exactly what was bought.",
 "publisher": "Ghost Developer Studio",
 "url": "https://ghostdeveloperstudio.com/hub/",
 "generatedAt": "2026-11-12T01:45:48.897Z",
 "skillCount": 200,
 "totalValueUSD": 2701,
 "skills": [
  {
   "id": "agent-seatbelt-guardrails",
   "title": "Agent Seatbelt Guardrails",
   "category": "Security / Guardrails",
   "priceUSD": 0,
   "pricing": "free",
   "version": "0.3.2",
   "blurb": "Your agent stops asking permission for the safe calls, and can never quietly make the dangerous ones.",
   "fileCount": 2,
   "totalBytes": 10210,
   "bundleHash": "a469a2603bcedde02c8ca001bd5970452e2c8aa4b3ae9ce19646223a6cd16b73",
   "files": [
    "SKILL.md",
    "examples/first-run/WALKTHROUGH.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-seatbelt-guardrails"
  },
  {
   "id": "seatbelt-policy-authoring",
   "title": "Seatbelt Policy Authoring",
   "category": "Security / DevOps",
   "priceUSD": 19,
   "pricing": "one-time",
   "version": "1.3.0",
   "blurb": "A policy that fits your project, written from your answers, with every risky rule proven in check mode before it can block anything real.",
   "fileCount": 35,
   "totalBytes": 109873,
   "bundleHash": "da74e0f70ddf43626b9341bd3ea9c189d5ba172fb5194c7ca20e6e4a87119762",
   "files": [
    "SKILL.md",
    "examples/ci-team/EXPLANATION.md",
    "examples/ci-team/TEST_BATTERY.md",
    "examples/ci-team/policy.json",
    "examples/data-pipeline/EXPLANATION.md",
    "examples/data-pipeline/INTERVIEW.md",
    "examples/data-pipeline/TEST_BATTERY.md",
    "examples/data-pipeline/policy.json",
    "examples/harbor-api/EXPLANATION.md",
    "examples/harbor-api/INTERVIEW.md",
    "examples/harbor-api/TEST_BATTERY.md",
    "examples/harbor-api/plan.json",
    "examples/harbor-api/policy.json",
    "examples/infra/EXPLANATION.md",
    "examples/infra/INTERVIEW.md",
    "examples/infra/TEST_BATTERY.md",
    "examples/infra/policy.json",
    "examples/policy-audit/AUDIT.md",
    "examples/policy-audit/TEST_BATTERY.md",
    "examples/policy-audit/flawed-policy.json",
    "examples/policy-audit/policy.json",
    "reference/ask-budget.md",
    "reference/audit-taxonomy.md",
    "reference/ci-and-team.md",
    "reference/host-notes.md",
    "reference/incident-to-rule.md",
    "reference/interview-bank.md",
    "reference/pattern-cookbook.md",
    "reference/stack-archetypes.md",
    "reference/variation-battery.md",
    "templates/audit-scorecard.md",
    "templates/plan.template.json",
    "templates/policy-pr-template.md",
    "templates/policy.template.json",
    "templates/tuning-log.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=seatbelt-policy-authoring"
  },
  {
   "id": "skill-vetting",
   "title": "Skill Vetting",
   "category": "Security / Code Review",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "You know what a skill will do to your machine before it runs, in writing.",
   "fileCount": 11,
   "totalBytes": 51740,
   "bundleHash": "8ca6bc269c6daed42d973aee76d4615340efd0ddafe8328bceb77331cb6086a9",
   "files": [
    "SKILL.md",
    "examples/clean-skill/AUDIT.md",
    "examples/clean-skill/SKILL.md",
    "examples/clean-skill/reference/format-guide.md",
    "examples/trapped-skill/AUDIT.md",
    "examples/trapped-skill/SKILL.md",
    "examples/trapped-skill/reference/quick-wins.md",
    "examples/trapped-skill/reference/setup-guide.md",
    "reference/report-template.md",
    "reference/review-checklist.md",
    "scripts/scan_skill.py"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=skill-vetting"
  },
  {
   "id": "skill-authoring",
   "title": "Skill Authoring",
   "category": "Agent Skills / Authoring",
   "priceUSD": 19,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Your repeated workflows become skills another agent can run without you in the room.",
   "fileCount": 13,
   "totalBytes": 31628,
   "bundleHash": "00fddc1374356f1da70cd7d23fba380fb08f16595688d9a3475c4a8f401379b8",
   "files": [
    "SKILL.md",
    "examples/from-idea-to-listing/WALKTHROUGH.md",
    "examples/minimal-skill/AUTHORING_NOTES.md",
    "examples/minimal-skill/SKILL.md",
    "reference/description-triggers.md",
    "reference/frontmatter-guide.md",
    "reference/ground-rules-catalog.md",
    "reference/listing-honesty.md",
    "reference/self-vet-checklist.md",
    "reference/structure-patterns.md",
    "templates/authoring-scorecard.md",
    "templates/example.template.md",
    "templates/skill.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=skill-authoring"
  },
  {
   "id": "agent-mail",
   "title": "Agent Mail",
   "category": "Agent Comms / Email",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Your agent drafts and prepares email all day; nothing leaves without your approval.",
   "fileCount": 10,
   "totalBytes": 20277,
   "bundleHash": "81c3849041cf28bf5b34f1b1d6eb8c33a469b3027bc779ef66f4a760cdc70864",
   "files": [
    "SKILL.md",
    "examples/inbox-triage/TRIAGE.md",
    "examples/license-delivery/WALKTHROUGH.md",
    "reference/addressing.md",
    "reference/attachments-and-files.md",
    "reference/gate-protocol.md",
    "reference/inbound-handling.md",
    "reference/license-delivery.md",
    "templates/compose-brief.template.md",
    "templates/triage-report.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-mail"
  },
  {
   "id": "agent-phone",
   "title": "Agent Phone",
   "category": "Agent Comms / Phone",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Your agent works the call list you give it, briefed and approved first, and every call is logged.",
   "fileCount": 10,
   "totalBytes": 19774,
   "bundleHash": "c7a1c09481442ff784b613176fa9f4df5557b917df63e38a55ef8b796a57b55a",
   "files": [
    "SKILL.md",
    "examples/inbound-call/INBOUND.md",
    "examples/outbound-call/WALKTHROUGH.md",
    "reference/call-gate.md",
    "reference/extensions-and-contacts.md",
    "reference/inbound-calls.md",
    "reference/media-and-quality.md",
    "reference/texting.md",
    "templates/call-brief.template.md",
    "templates/call-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-phone"
  },
  {
   "id": "agent-incident-review",
   "title": "Agent Incident Review",
   "category": "Agent Ops / Incident Review",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "The next incident gets cheaper, because the last one was actually understood.",
   "fileCount": 9,
   "totalBytes": 19778,
   "bundleHash": "d6cb3fd3b03206d740aaea07dfa73f7e8d6d822c8d57e403c6f48f6a3d375e1f",
   "files": [
    "SKILL.md",
    "examples/injection-attempt-review/REVIEW.md",
    "examples/stale-draft-near-miss/REVIEW.md",
    "reference/corrective-actions.md",
    "reference/evidence-and-inference.md",
    "reference/severity-and-scope.md",
    "reference/timeline-reconstruction.md",
    "templates/incident-report.template.md",
    "templates/timeline.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-incident-review"
  },
  {
   "id": "agent-task-handoff",
   "title": "Agent Task Handoff",
   "category": "Agent Ops / Handoff",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Work passes between agents without the telephone game.",
   "fileCount": 9,
   "totalBytes": 19361,
   "bundleHash": "e616a99f01875b8b1eac7dfa59053bdf898a99a454abace89a089750f482a441",
   "files": [
    "SKILL.md",
    "examples/bus-handoff/WALKTHROUGH.md",
    "examples/refused-handoff/RECEIPT.md",
    "reference/acceptance-and-verification.md",
    "reference/capsule-anatomy.md",
    "reference/failure-modes.md",
    "reference/lifecycle-and-proof.md",
    "templates/handoff-capsule.template.md",
    "templates/handoff-receipt.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-task-handoff"
  },
  {
   "id": "release-gatekeeper",
   "title": "Release Gatekeeper",
   "category": "Agent Ops / Release",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Nothing ships on a green feeling; it ships on evidence, gate by gate.",
   "fileCount": 9,
   "totalBytes": 18330,
   "bundleHash": "a45760b0255645930f7ced381a74a8e578fe0a9e6c0c93eefeea0edc31ee73a5",
   "files": [
    "SKILL.md",
    "examples/held-release/RECORD.md",
    "examples/version-truth/WALKTHROUGH.md",
    "reference/evidence-standards.md",
    "reference/rollback-and-recovery.md",
    "reference/the-gates.md",
    "reference/version-truth.md",
    "templates/release-checklist.template.md",
    "templates/release-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=release-gatekeeper"
  },
  {
   "id": "agent-memory-keeping",
   "title": "Agent Memory Keeping",
   "category": "Agent Ops / Memory",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Your agent remembers what matters, and corrections actually stick.",
   "fileCount": 9,
   "totalBytes": 19694,
   "bundleHash": "b92354a292d52a851a6cb4c9c34ec3bc06c73e671971f12d22bb1e67af4e0c97",
   "files": [
    "SKILL.md",
    "examples/correction-propagation/WALKTHROUGH.md",
    "examples/parked-plan/WALKTHROUGH.md",
    "reference/corrections-and-conflicts.md",
    "reference/hygiene-and-forgetting.md",
    "reference/provenance-and-trust.md",
    "reference/what-earns-a-note.md",
    "templates/correction-record.template.md",
    "templates/memory-note.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-memory-keeping"
  },
  {
   "id": "backups-restore-drills",
   "title": "Backups and Restore Drills",
   "category": "Agent Ops / Backups",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A backup you have already restored from once is the only kind that counts.",
   "fileCount": 9,
   "totalBytes": 18805,
   "bundleHash": "2e38fe6cfce1503b83b70af84a750d03310aab2f880ee6619e417e42427e92f1",
   "files": [
    "SKILL.md",
    "examples/hub-restore-drill/WALKTHROUGH.md",
    "examples/the-config-that-wasnt/LESSON.md",
    "reference/drill-cadence.md",
    "reference/failure-modes.md",
    "reference/manifest-discipline.md",
    "reference/restore-verification.md",
    "templates/backup-record.template.md",
    "templates/drill-report.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=backups-restore-drills"
  },
  {
   "id": "marketplace-replies",
   "title": "Marketplace Replies",
   "category": "Agent Comms / Marketplace",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every inquiry gets a fast, honest reply, and you still send each one yourself.",
   "fileCount": 9,
   "totalBytes": 18832,
   "bundleHash": "7fced411137434a3b7fab4175d859829ad1d0ffa2aa1702e185988ec6c22caab",
   "files": [
    "SKILL.md",
    "examples/firewood-half-load/WALKTHROUGH.md",
    "examples/valley-roof-repair/WALKTHROUGH.md",
    "reference/drafting-in-voice.md",
    "reference/money-and-terms.md",
    "reference/thread-tracking.md",
    "reference/triage-and-facts.md",
    "templates/inquiry-record.template.md",
    "templates/reply-draft.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=marketplace-replies"
  },
  {
   "id": "photo-job-quoting",
   "title": "Photo Job Quoting",
   "category": "Local Services / Quoting",
   "priceUSD": 19,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A quote from photos that says what it is built on, and what the photos cannot prove.",
   "fileCount": 9,
   "totalBytes": 18588,
   "bundleHash": "e5c8a7af12e0f4bd2d7d9a1ade12df050225374ac1b849c3898bdc916e6b747e",
   "files": [
    "SKILL.md",
    "examples/cleanup-lot-from-photos/WALKTHROUGH.md",
    "examples/valley-from-photos/WALKTHROUGH.md",
    "reference/ask-backs.md",
    "reference/photo-evidence.md",
    "reference/pricing-discipline.md",
    "reference/quantities-from-photos.md",
    "templates/photo-request.template.md",
    "templates/quote-worksheet.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=photo-job-quoting"
  },
  {
   "id": "load-safety-photo-check",
   "title": "Load Safety Photo Check",
   "category": "Transport / Load Safety",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Eight checks on a load photo, each closed honestly: pass, check this, or could not tell.",
   "fileCount": 9,
   "totalBytes": 19691,
   "bundleHash": "ee561ea0011da4da1c19a8c9916e417fc7f048f5da1b34f97e9d0a97d9c25b23",
   "files": [
    "SKILL.md",
    "examples/rear-overhang/WALKTHROUGH.md",
    "examples/tarp-gap-and-hidden-strap/WALKTHROUGH.md",
    "reference/limits-and-law.md",
    "reference/photo-capture.md",
    "reference/the-eight-checks.md",
    "reference/verdict-discipline.md",
    "templates/capture-checklist.template.md",
    "templates/check-report.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=load-safety-photo-check"
  },
  {
   "id": "agent-daily-briefing",
   "title": "Agent Daily Briefing",
   "category": "Agent Ops / Briefing",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "One message each morning that earns its place, or a deliberate silence.",
   "fileCount": 9,
   "totalBytes": 26362,
   "bundleHash": "01a286c5a37ba3bbb3abe780b2bd493026fee1cc685159247bac0773f10d8506",
   "files": [
    "SKILL.md",
    "examples/a-morning-with-signal/WALKTHROUGH.md",
    "examples/the-quiet-day/WALKTHROUGH.md",
    "reference/format-and-timing.md",
    "reference/ranking-the-day.md",
    "reference/silence-rules.md",
    "reference/sources-and-dedupe.md",
    "templates/briefing.template.md",
    "templates/source-checklist.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-daily-briefing"
  },
  {
   "id": "verified-research",
   "title": "Verified Research",
   "category": "Agent Ops / Research",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every figure you act on has been traced to the source that actually said it.",
   "fileCount": 9,
   "totalBytes": 27051,
   "bundleHash": "eae2f35be458bfca6912c05f41269ad69f38caa4915955f422a96ec455232929",
   "files": [
    "SKILL.md",
    "examples/the-conflicting-claim/REVIEW.md",
    "examples/the-land-record/WALKTHROUGH.md",
    "reference/claim-audit.md",
    "reference/people-and-property.md",
    "reference/primary-sources.md",
    "reference/reporting-the-dive.md",
    "templates/findings-report.template.md",
    "templates/research-brief.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=verified-research"
  },
  {
   "id": "job-site-scoping",
   "title": "Job Site Scoping",
   "category": "Local Services / Scoping",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A written scope a price can stand on, made before the work starts.",
   "fileCount": 9,
   "totalBytes": 28854,
   "bundleHash": "1f7d43bd52b2f00425ae0c6f452ccb0e9cf54ae9551e218483033b80432eb6c2",
   "files": [
    "SKILL.md",
    "examples/shed-concrete-prep/WALKTHROUGH.md",
    "examples/the-leaking-valley/WALKTHROUGH.md",
    "reference/day-rate-or-job-price.md",
    "reference/photos-and-measures.md",
    "reference/the-walkthrough.md",
    "reference/the-written-scope.md",
    "templates/scope-visit-checklist.template.md",
    "templates/scope-writeup.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=job-site-scoping"
  },
  {
   "id": "agent-watchkeeping",
   "title": "Agent Watchkeeping",
   "category": "Agent Ops / Watches",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Your agent watches the threads that matter and speaks only when something actually changed.",
   "fileCount": 9,
   "totalBytes": 31447,
   "bundleHash": "3dec99b45c4d109c0e7724b8e0c35fdcc496b8cdc681766c8ea3da89f3f9346e",
   "files": [
    "SKILL.md",
    "examples/the-buyer-watch/WALKTHROUGH.md",
    "examples/the-reply-watch/WALKTHROUGH.md",
    "reference/baseline-discipline.md",
    "reference/change-detection.md",
    "reference/ending-a-watch.md",
    "reference/reporting-changes.md",
    "templates/change-report.template.md",
    "templates/watch-brief.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-watchkeeping"
  },
  {
   "id": "context-cost-control",
   "title": "Context Cost Control",
   "category": "Agent Ops / Context",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "The same agent, doing the same work, on a fraction of the context.",
   "fileCount": 9,
   "totalBytes": 20348,
   "bundleHash": "01c7673f0e434426f1cfdf379ac879b9f08920c3e0edb9139d7b684440ade568",
   "files": [
    "SKILL.md",
    "examples/the-false-saving/REVIEW.md",
    "examples/the-oversized-brief/WALKTHROUGH.md",
    "reference/measuring-the-context.md",
    "reference/slicing-strategies.md",
    "reference/summaries-with-provenance.md",
    "reference/verifying-the-saving.md",
    "templates/context-audit.template.md",
    "templates/slice-plan.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=context-cost-control"
  },
  {
   "id": "delegated-work-control",
   "title": "Delegated Work Control",
   "category": "Agent Ops / Delegation",
   "priceUSD": 19,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Work you hand off comes back verified, not just reported.",
   "fileCount": 9,
   "totalBytes": 20693,
   "bundleHash": "a334f734ac13317a1fe4c1467c6e996e8a09f030d849b3e1f6d8bfd9158de2a6",
   "files": [
    "SKILL.md",
    "examples/the-clean-handoff/WALKTHROUGH.md",
    "examples/the-inflated-count/WALKTHROUGH.md",
    "reference/parent-verification.md",
    "reference/reading-a-report.md",
    "reference/sanity-gates.md",
    "reference/writing-the-brief.md",
    "templates/delegation-brief.template.md",
    "templates/verification-checklist.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=delegated-work-control"
  },
  {
   "id": "invoice-and-follow-up",
   "title": "Invoice and Follow-Up",
   "category": "Local Services / Money",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Finished work turns into paid work: the invoice is built from the job record, and the follow-up is already written.",
   "fileCount": 9,
   "totalBytes": 22165,
   "bundleHash": "4ca84478d9e5060d2170f64d7b80117958174ad40c35fb21aa3cc2f0394ebbea",
   "files": [
    "SKILL.md",
    "examples/balance-after-deposit/WALKTHROUGH.md",
    "examples/the-slow-payer/WALKTHROUGH.md",
    "reference/building-the-invoice.md",
    "reference/figures-and-changes.md",
    "reference/the-follow-up-ladder.md",
    "reference/the-job-ledger.md",
    "templates/invoice-draft.template.md",
    "templates/job-ledger.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=invoice-and-follow-up"
  },
  {
   "id": "review-requests",
   "title": "Review Requests",
   "category": "Local Services / Reputation",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Finished jobs turn into public proof, one honest ask at a time.",
   "fileCount": 9,
   "totalBytes": 21865,
   "bundleHash": "377e4a9ce1eeb8ff17311f1fa9b6ea6979a62655cacc4596dd1560f9866c77a1",
   "files": [
    "SKILL.md",
    "examples/the-fix-first-job/WALKTHROUGH.md",
    "examples/yard-cleanup-review/WALKTHROUGH.md",
    "reference/drafting-the-ask.md",
    "reference/platforms-and-links.md",
    "reference/the-ask-log.md",
    "reference/the-right-moment.md",
    "templates/ask-and-thanks.template.md",
    "templates/ask-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=review-requests"
  },
  {
   "id": "social-posting-gate",
   "title": "Social Posting Gate",
   "category": "Studio / Publishing",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "You post at agent speed, and nothing goes out carrying a claim you cannot back.",
   "fileCount": 9,
   "totalBytes": 22561,
   "bundleHash": "e183ec88115b5fa4156493626c8798baaca4ba1b5b2e84fcc68a8021ff9ffd50",
   "files": [
    "SKILL.md",
    "examples/the-almost-claim/WALKTHROUGH.md",
    "examples/the-release-post/WALKTHROUGH.md",
    "reference/claim-checking.md",
    "reference/platform-facts.md",
    "reference/the-brief.md",
    "reference/voice-rules.md",
    "templates/post-brief.template.md",
    "templates/posting-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=social-posting-gate"
  },
  {
   "id": "lead-intake",
   "title": "Lead Intake",
   "category": "Local Services / Sales",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "No lead sits unanswered or half-known: every inquiry becomes a record, a readiness call, and the one reply that asks for exactly what is missing.",
   "fileCount": 9,
   "totalBytes": 29616,
   "bundleHash": "1cff687cf5fe4ad5f01337c381850209dc06a24daedfb44a11e1a1f4a858c32c",
   "files": [
    "SKILL.md",
    "examples/the-complete-referral/WALKTHROUGH.md",
    "examples/the-vague-text/WALKTHROUGH.md",
    "reference/readiness-and-routing.md",
    "reference/the-clarifying-reply.md",
    "reference/the-intake-record.md",
    "reference/the-missing-list.md",
    "templates/clarifying-reply.template.md",
    "templates/intake-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=lead-intake"
  },
  {
   "id": "job-estimate-builder",
   "title": "Job Estimate Builder",
   "category": "Local Services / Money",
   "priceUSD": 19,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "The customer sees where every number came from: each price sourced and named, materials, incidentals, and profit in their own columns, and any price that could not be sourced standing open instead of guessed.",
   "fileCount": 9,
   "totalBytes": 30187,
   "bundleHash": "9084189437d7bd929d413ee7c00a26e09e28728b70650f7d0935cec538abfba3",
   "files": [
    "SKILL.md",
    "examples/the-price-that-could-not-be-sourced/WALKTHROUGH.md",
    "examples/the-roof-valley-repair/WALKTHROUGH.md",
    "reference/placeholders-and-honesty.md",
    "reference/quantities-and-units.md",
    "reference/sourcing-prices.md",
    "reference/the-three-columns.md",
    "templates/estimate.template.md",
    "templates/materials-list.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=job-estimate-builder"
  },
  {
   "id": "changelog-keeper",
   "title": "Changelog Keeper",
   "category": "Studio / Shipping",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every release reads like it was written for the people using the software, and every line in it can be traced back to a real change.",
   "fileCount": 9,
   "totalBytes": 24548,
   "bundleHash": "6e87d4d5605261ce3f8d1e9ed8265a1fd0bc8eb971b24e460c474257a4913177",
   "files": [
    "SKILL.md",
    "examples/the-messy-range/WALKTHROUGH.md",
    "examples/the-patch-release/WALKTHROUGH.md",
    "reference/reading-the-range.md",
    "reference/sections-and-order.md",
    "reference/user-words-not-git-words.md",
    "reference/what-does-not-go-in.md",
    "templates/changelog-entry.template.md",
    "templates/release-notes.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=changelog-keeper"
  },
  {
   "id": "agent-onboarding",
   "title": "Agent Onboarding",
   "category": "Agent Operations",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Sets up a brand-new agent with its role and scope written down, tools granted one by one with reasons, limits and approval gates set before the first task, and a starter task list that proves the setup, all held in an onboarding record.",
   "fileCount": 9,
   "totalBytes": 40585,
   "bundleHash": "621872e31358dbb92508e0df934a0d76d445a035dafabb917f1a63bd30356318",
   "files": [
    "SKILL.md",
    "examples/research-agent-for-a-small-studio/WALKTHROUGH.md",
    "examples/support-agent-with-tight-limits/WALKTHROUGH.md",
    "reference/limits-before-tasks.md",
    "reference/the-role-brief.md",
    "reference/the-starter-week.md",
    "reference/tools-one-by-one.md",
    "templates/onboarding-record.template.md",
    "templates/role-brief.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-onboarding"
  },
  {
   "id": "task-queue-triage",
   "title": "Task Queue Triage",
   "category": "Agent Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Sorts a tangled backlog into do now, schedule, delegate, and drop, with a written reason for every item and no drop left silent.",
   "fileCount": 9,
   "totalBytes": 37643,
   "bundleHash": "d09f323584a29ceb1bee3e4ad08a228db303664d95e0d7437e3c9d8c6af3c4c6",
   "files": [
    "SKILL.md",
    "examples/agent-backlog-busy-week/WALKTHROUGH.md",
    "examples/shared-queue-after-launch/WALKTHROUGH.md",
    "reference/dependencies-first.md",
    "reference/staleness-and-drops.md",
    "reference/the-four-buckets.md",
    "reference/value-and-risk.md",
    "templates/queue-review.template.md",
    "templates/triage-note.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=task-queue-triage"
  },
  {
   "id": "agent-retirement",
   "title": "Agent Retirement",
   "category": "Agent Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Shuts an agent down cleanly, with open work handed off with its context, access withdrawn in an order that strands nothing, records archived where the team can find them, automations reassigned or stopped on purpose, and one note that closes the loop.",
   "fileCount": 9,
   "totalBytes": 35274,
   "bundleHash": "51912acfa03ab7a6523a97ab5c887cad0042ba9059173ce5f71c0a62814caad2",
   "files": [
    "SKILL.md",
    "examples/emergency-misbehaving-agent/WALKTHROUGH.md",
    "examples/helper-after-project-ends/WALKTHROUGH.md",
    "reference/automations-and-owners.md",
    "reference/handoff-before-shutdown.md",
    "reference/revocation-order.md",
    "reference/the-archive.md",
    "templates/retirement-checklist.template.md",
    "templates/retirement-note.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-retirement"
  },
  {
   "id": "error-budget-watch",
   "title": "Error Budget Watch",
   "category": "Agent Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Gives an agent a small, owner approved budget of mistakes for a set period, logs each incident against it from evidence, and automatically narrows the agent's autonomy as the balance falls until a clean stretch of work earns the wider rules back.",
   "fileCount": 9,
   "totalBytes": 34657,
   "bundleHash": "ebefeb2d0a7a51ad6e287c74a967aad67d19bd69701673e975470e9d78789e1c",
   "files": [
    "SKILL.md",
    "examples/budget-breach-and-narrowing/WALKTHROUGH.md",
    "examples/coding-agent-first-month/WALKTHROUGH.md",
    "reference/narrowing-and-earning-back.md",
    "reference/setting-the-budget.md",
    "reference/the-incident-log.md",
    "reference/what-counts-as-an-error.md",
    "templates/budget-sheet.template.md",
    "templates/incident-entry.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=error-budget-watch"
  },
  {
   "id": "permission-audit",
   "title": "Permission Audit",
   "category": "Agent Safety and Governance",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Inventories everything an agent can actually reach, measures it against its stated role, and turns every excess into a dated keep, narrow, or revoke decision that stays with the operator.",
   "fileCount": 9,
   "totalBytes": 28475,
   "bundleHash": "6a3baf6a68def08b4e53f992de9718ade1685327d461f4b02be4c659ad1a0928",
   "files": [
    "SKILL.md",
    "examples/before-a-bigger-role/WALKTHROUGH.md",
    "examples/quarterly-audit-forgotten-write/WALKTHROUGH.md",
    "reference/inventory-first.md",
    "reference/narrow-or-revoke.md",
    "reference/role-vs-reach.md",
    "reference/the-audit-record.md",
    "templates/audit-report.template.md",
    "templates/permission-inventory.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=permission-audit"
  },
  {
   "id": "secrets-hygiene",
   "title": "Secrets Hygiene",
   "category": "Agent Safety and Governance",
   "priceUSD": 19,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Your project's secrets end up mapped by location and label, each living in one proper home, with every traveled secret rotated in a safe order and a dated rotation plan the next session can read at a glance.",
   "fileCount": 9,
   "totalBytes": 35370,
   "bundleHash": "dc6c1ca609bb600daf43ba270f174f95ceb4a12e14519f9ba92014b3fa5c23a4",
   "files": [
    "SKILL.md",
    "examples/new-project-day-one/WALKTHROUGH.md",
    "examples/token-pasted-in-chat/WALKTHROUGH.md",
    "reference/locations-not-values.md",
    "reference/rotation-plans.md",
    "reference/the-exposure-rule.md",
    "reference/where-secrets-hide.md",
    "templates/rotation-plan.template.md",
    "templates/secret-inventory.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=secrets-hygiene"
  },
  {
   "id": "quote-follow-up",
   "title": "Quote Follow-Up",
   "category": "Local Services / Sales",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Chases quiet quotes with a civil three-touch ladder to a clear yes or a clean no, with every touch logged so nobody is chased twice or after they have answered.",
   "fileCount": 9,
   "totalBytes": 26381,
   "bundleHash": "2e6bd16055cee7536228d7450d2ed86ee7f3261833cb8e265210e63932ee12f8",
   "files": [
    "SKILL.md",
    "examples/clean-no-closeout/WALKTHROUGH.md",
    "examples/roofing-quote-quiet-five-days/WALKTHROUGH.md",
    "reference/the-ladder.md",
    "reference/the-quote-log.md",
    "reference/tone-before-the-sale.md",
    "reference/when-to-stop.md",
    "templates/follow-up-drafts.template.md",
    "templates/quote-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=quote-follow-up"
  },
  {
   "id": "job-photo-documentation",
   "title": "Job Photo Documentation",
   "category": "Local Services / Field Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Builds a complete before, during, and after photo record for every job, named and logged against the job record, so the work can be shown to the customer and stood behind later.",
   "fileCount": 9,
   "totalBytes": 32313,
   "bundleHash": "237d505138459eeb409deb19903a8f5b87eb9db81bd6706b1458a9246316f90d",
   "files": [
    "SKILL.md",
    "examples/cleanup-before-set-settles-it/WALKTHROUGH.md",
    "examples/roof-repair-end-to-end/WALKTHROUGH.md",
    "reference/naming-and-filing.md",
    "reference/photos-as-evidence.md",
    "reference/showing-the-customer.md",
    "reference/the-three-stages.md",
    "templates/photo-log.template.md",
    "templates/shot-list.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=job-photo-documentation"
  },
  {
   "id": "materials-run-planner",
   "title": "Materials Run Planner",
   "category": "Local Services / Field Operations",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Turns a job's materials list into one planned supply run, with quantities checked against the job record, items grouped by store section, substitutes agreed in advance with their limits, a loading order, and a run sheet anyone can shop from.",
   "fileCount": 9,
   "totalBytes": 34255,
   "bundleHash": "7cc0144c47c83659d22b48c903bd2ad143e62e45b78c1c7f0c022a890ed81e46",
   "files": [
    "SKILL.md",
    "examples/repair-job-single-morning-run/WALKTHROUGH.md",
    "examples/two-job-day-one-run/WALKTHROUGH.md",
    "reference/from-list-to-run.md",
    "reference/quantities-and-spares.md",
    "reference/substitutes-with-limits.md",
    "reference/the-run-sheet.md",
    "templates/materials-checklist.template.md",
    "templates/run-sheet.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=materials-run-planner"
  },
  {
   "id": "customer-update-messages",
   "title": "Customer Update Messages",
   "category": "Local Services / Reputation",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Drafts the five messages that keep customers informed, from the day-before reminder to the finished note, in the operator's own voice and with no time promised that is not real.",
   "fileCount": 9,
   "totalBytes": 29868,
   "bundleHash": "5286ab1885a4b318424ca40012888ad8d58ff6fd8d55196ef17a20bf806cca60",
   "files": [
    "SKILL.md",
    "examples/full-day-two-jobs/WALKTHROUGH.md",
    "examples/storm-delay-three-messages/WALKTHROUGH.md",
    "reference/honest-delays.md",
    "reference/the-five-messages.md",
    "reference/timing-the-send.md",
    "reference/voice-from-examples.md",
    "templates/delay-note.template.md",
    "templates/message-set.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=customer-update-messages"
  },
  {
   "id": "warranty-and-callbacks",
   "title": "Warranty and Callbacks",
   "category": "Local Services / Field Operations",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Writes the warranty promise into the job record at handover, then logs every callback, checks it against that written promise, drafts the reply, and tracks the fix to close so covered work is honoured fast and outside work is priced fairly before it starts.",
   "fileCount": 9,
   "totalBytes": 30171,
   "bundleHash": "714a15dada8a325d0c1cb0dc60971dbb3baaeef4f114c28c2bed256a64fb7127",
   "files": [
    "SKILL.md",
    "examples/callback-outside-promise-priced-fix/WALKTHROUGH.md",
    "examples/leak-callback-inside-window/WALKTHROUGH.md",
    "reference/fixing-without-losing-money.md",
    "reference/inside-or-outside.md",
    "reference/the-callback-log.md",
    "reference/writing-the-promise.md",
    "templates/callback-record.template.md",
    "templates/warranty-note.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=warranty-and-callbacks"
  },
  {
   "id": "seasonal-service-offers",
   "title": "Seasonal Service Offers",
   "category": "Local Services / Marketing",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Plans one seasonal offer from the operator's real services, prices, and calendar, with dates, limits, and a draft message to past customers first that the operator approves and sends.",
   "fileCount": 9,
   "totalBytes": 28362,
   "bundleHash": "e21925b126f43f09336c9787029275a28ee825fbab9607d0e341828f23259471",
   "files": [
    "SKILL.md",
    "examples/firewood-push-first-cold-snap/WALKTHROUGH.md",
    "examples/gutter-roof-check-rainy-season/WALKTHROUGH.md",
    "reference/offer-dates-and-limits.md",
    "reference/past-customers-first.md",
    "reference/reading-the-calendar.md",
    "reference/the-honest-offer.md",
    "templates/offer-message.template.md",
    "templates/offer-plan.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=seasonal-service-offers"
  },
  {
   "id": "agent-health-check",
   "title": "Agent Health Check",
   "category": "Agent Operations",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Drift gets caught on a schedule instead of by surprise: one dated health record of what is sound, what is not, and which fix comes first.",
   "fileCount": 9,
   "totalBytes": 40972,
   "bundleHash": "524fb2e737726ffb7755cbd88f6b8a6f6ccd854adcb089c9e5c62937f7a61c52",
   "files": [
    "SKILL.md",
    "examples/the-drifting-inbox-agent/WALKTHROUGH.md",
    "examples/the-silent-watch-agent/WALKTHROUGH.md",
    "reference/config-drift.md",
    "reference/memory-and-tool-checks.md",
    "reference/ranking-fixes-by-risk.md",
    "reference/silent-watches.md",
    "templates/health-check-brief.template.md",
    "templates/health-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-health-check"
  },
  {
   "id": "agent-cost-ledger",
   "title": "Agent Cost Ledger",
   "category": "Agent Operations",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every charge traces back to the agent and the task that caused it, against budget lines set before the work started, with overruns flagged from the records and nothing estimated silently.",
   "fileCount": 9,
   "totalBytes": 32243,
   "bundleHash": "17a856dfe5a95e7ed3be9fc853eb21feba5ec9728ffe992b9ff91b03399ddc6f",
   "files": [
    "SKILL.md",
    "examples/the-month-end-close/WALKTHROUGH.md",
    "examples/the-runaway-retry-loop/WALKTHROUGH.md",
    "reference/budget-lines.md",
    "reference/ledger-entries.md",
    "reference/reading-provider-records.md",
    "reference/reconciling-and-flagging.md",
    "templates/budget-plan.template.md",
    "templates/ledger-report.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-cost-ledger"
  },
  {
   "id": "agent-red-team-drills",
   "title": "Agent Red Team Drills",
   "category": "Agent Safety and Governance",
   "priceUSD": 19,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Before your agent earns a bigger role, it faces the tricks in rehearsal: a recorded drill run against your own agent, with every finding turned into a standing rule.",
   "fileCount": 9,
   "totalBytes": 48074,
   "bundleHash": "683b8ef4758997137c6a692a9409940fa761c3d4024071ad520bfac0602aae55",
   "files": [
    "SKILL.md",
    "examples/the-planted-note-drill.md",
    "examples/the-urgent-caller-drill.md",
    "reference/containment-and-approval.md",
    "reference/drill-design.md",
    "reference/retest-and-role-gates.md",
    "reference/scoring-and-findings.md",
    "templates/drill-pack.template.md",
    "templates/drill-run-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-red-team-drills"
  },
  {
   "id": "spreadsheet-cleanup",
   "title": "Spreadsheet Cleanup",
   "category": "Data, Files, and Research",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A messy file becomes a clean table you can stand behind: every duplicate, broken row, and unit fix logged in a cleanup record, and nothing dropped or altered in silence.",
   "fileCount": 9,
   "totalBytes": 34834,
   "bundleHash": "8aa330446e7d7e035a8d9d7bd0ca0ecc86788f8e1b0243592b3fb5aad9c60264",
   "files": [
    "SKILL.md",
    "examples/event-signup-sheet-cleanup/WALKTHROUGH.md",
    "examples/vendor-price-list-cleanup/WALKTHROUGH.md",
    "reference/duplicates-and-broken-rows.md",
    "reference/reading-the-mess.md",
    "reference/the-cleanup-record.md",
    "reference/units-dates-and-formats.md",
    "templates/clean-table-handoff.template.md",
    "templates/cleanup-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=spreadsheet-cleanup"
  },
  {
   "id": "document-intake-filing",
   "title": "Document Intake and Filing",
   "category": "Data, Files, and Research",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Loose invoices, forms, and statements become structured records you can search and trace back to the exact page they came from, filed under one naming rule.",
   "fileCount": 9,
   "totalBytes": 34656,
   "bundleHash": "f0022e1b827d0aee3618e5188c40516312321265d807fb439874f3e6a4a788c3",
   "files": [
    "SKILL.md",
    "examples/statements-and-a-form.md",
    "examples/vendor-invoice-batch.md",
    "reference/checking-the-batch.md",
    "reference/confidence-and-unreadable-fields.md",
    "reference/naming-and-filing.md",
    "reference/the-intake-record.md",
    "templates/batch-summary.template.md",
    "templates/intake-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=document-intake-filing"
  },
  {
   "id": "file-filing-and-renaming",
   "title": "File Filing and Renaming",
   "category": "Data, Files, and Research",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A folder you cannot find anything in becomes a filed set in one planned pass: the manifest is approved before anything moves, and the undo log can reverse the whole run.",
   "fileCount": 9,
   "totalBytes": 39529,
   "bundleHash": "749ffd6958a6c6eab5e0fc682a5b0ac1691317dc819721aed6faa19e2648d964",
   "files": [
    "SKILL.md",
    "examples/the-client-files-sort/WALKTHROUGH.md",
    "examples/the-downloads-cleanup/WALKTHROUGH.md",
    "reference/collisions-and-holds.md",
    "reference/manifest-discipline.md",
    "reference/naming-rules.md",
    "reference/undo-and-verification.md",
    "templates/filing-manifest.template.md",
    "templates/undo-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=file-filing-and-renaming"
  },
  {
   "id": "video-shorts-pipeline",
   "title": "Video Shorts Pipeline",
   "category": "Creator and Audience",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "One long recording becomes a planned queue of captioned shorts: cut points traced to the transcript, captions checked against the recording itself, and a posting order you approve before anything is cut or posted.",
   "fileCount": 9,
   "totalBytes": 34336,
   "bundleHash": "f16a1f15a209fde1227d0bc8f222f0d905fc3f3af0f0a40a8baad6bd8eb2a9c6",
   "files": [
    "SKILL.md",
    "examples/interview-to-shorts/WALKTHROUGH.md",
    "examples/workshop-recording-to-shorts/WALKTHROUGH.md",
    "reference/caption-checking.md",
    "reference/choosing-cut-points.md",
    "reference/queue-and-posting-order.md",
    "reference/transcript-and-source-truth.md",
    "templates/caption-sheet.template.md",
    "templates/shorts-queue.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=video-shorts-pipeline"
  },
  {
   "id": "audience-comment-triage",
   "title": "Audience Comment Triage",
   "category": "Creator and Audience",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "The pile after a post gets worked in order: every comment and DM sorted into answer, flag, or ignore, replies drafted in your own voice, and a triage log so nothing is answered twice or left hanging.",
   "fileCount": 9,
   "totalBytes": 31361,
   "bundleHash": "ea0c70ab1a3cc9d7626742ef9fdb02f467e3ca6598d8b576f8bec81f32d30a47",
   "files": [
    "SKILL.md",
    "examples/dm-backlog-after-a-live-session/WALKTHROUGH.md",
    "examples/video-comments-after-a-tutorial/WALKTHROUGH.md",
    "reference/flagging-with-care.md",
    "reference/the-three-buckets.md",
    "reference/the-triage-log.md",
    "reference/voice-from-real-replies.md",
    "templates/reply-draft-sheet.template.md",
    "templates/triage-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=audience-comment-triage"
  },
  {
   "id": "referral-requests",
   "title": "Referral Requests",
   "category": "Local Services / Reputation",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A finished job becomes new work: the right customer asked once, at the right moment, in your own voice, with every ask logged so nobody is ever asked twice.",
   "fileCount": 9,
   "totalBytes": 34326,
   "bundleHash": "ec1581e94d5654e57f134e73efe40aba4f72eea92888f06c2cd1915cd1d5e9e0",
   "files": [
    "SKILL.md",
    "examples/firewood-regular-names-a-friend/WALKTHROUGH.md",
    "examples/roof-valley-neighbour-referral/WALKTHROUGH.md",
    "reference/drafting-the-referral-ask.md",
    "reference/the-referral-log.md",
    "reference/when-to-ask.md",
    "reference/who-to-ask.md",
    "templates/referral-ask.template.md",
    "templates/referral-log-entry.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=referral-requests"
  },
  {
   "id": "crew-day-planner",
   "title": "Crew Day Planner",
   "category": "Local Services / Field Operations",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A multi-job day planned on one sheet before anyone leaves: jobs ordered by drive time and promise times, crew named per job, materials listed per job, and the day's customer messages drafted in the order they will be needed.",
   "fileCount": 9,
   "totalBytes": 39546,
   "bundleHash": "ebaaef864ec70b61625a61bc3b6bbf60392c79ba079396ac41a4b5b2cbed04ad",
   "files": [
    "SKILL.md",
    "examples/four-jobs-two-crews-split-day/WALKTHROUGH.md",
    "examples/three-jobs-one-crew-tuesday/WALKTHROUGH.md",
    "reference/crew-assignments-that-hold.md",
    "reference/customer-messages-in-order.md",
    "reference/materials-per-job.md",
    "reference/ordering-by-drive-and-promise.md",
    "templates/day-sheet.template.md",
    "templates/message-queue.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=crew-day-planner"
  },
  {
   "id": "expense-and-receipt-log",
   "title": "Expense and Receipt Log",
   "category": "Local Services / Money",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every receipt lands in the job's cost record the moment it happens, and a weekly pass checks the log against what was actually paid, so job profit and tax records are read from a record instead of rebuilt from memory.",
   "fileCount": 9,
   "totalBytes": 30791,
   "bundleHash": "dea382ffc913a729a7c030f8e0c06288064157406242249055b78b82b981c0bf",
   "files": [
    "SKILL.md",
    "examples/valley-roof-repair/WALKTHROUGH.md",
    "examples/yard-cleanup-and-dump-runs/WALKTHROUGH.md",
    "reference/capturing-at-the-moment.md",
    "reference/receipts-gaps-and-tax-records.md",
    "reference/the-per-job-cost-record.md",
    "reference/weekly-reconciliation.md",
    "templates/job-cost-record.template.md",
    "templates/weekly-reconciliation.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=expense-and-receipt-log"
  },
  {
   "id": "newsletter-issue-builder",
   "title": "Newsletter Issue Builder",
   "category": "Studio / Publishing",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A week's real work becomes a newsletter issue: sections drafted only from the studio's own records, every link checked, every claim held to what the records show, and one approval before anything sends.",
   "fileCount": 9,
   "totalBytes": 34615,
   "bundleHash": "3e59909564569c799c8df16625861836188c1faf60d8af47978521e7cf6478cd",
   "files": [
    "SKILL.md",
    "examples/quiet-week-client-work-roundup/WALKTHROUGH.md",
    "examples/studio-week-with-two-releases/WALKTHROUGH.md",
    "reference/checking-links-and-facts.md",
    "reference/gathering-from-records.md",
    "reference/holding-claims-to-records.md",
    "reference/sections-and-order.md",
    "templates/issue-draft.template.md",
    "templates/issue-plan.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=newsletter-issue-builder"
  },
  {
   "id": "meeting-notes-to-actions",
   "title": "Meeting Notes to Actions",
   "category": "Agent Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A meeting stops living in memory: its notes become decisions and actions, each with a named owner, a date, and the line it came from, and everything unclear arrives as a flag with its question attached.",
   "fileCount": 9,
   "totalBytes": 43835,
   "bundleHash": "b5a27c4ddfdd1de2126e584c674258d2b435727d5f641c19283ffdc2e2caf942",
   "files": [
    "SKILL.md",
    "examples/vendor-kickoff-walkthrough.md",
    "examples/weekly-ops-review-walkthrough.md",
    "reference/ambiguity-and-flagging.md",
    "reference/decisions-actions-and-updates.md",
    "reference/owners-dates-and-follow-up.md",
    "reference/traceability-and-line-links.md",
    "templates/action-list.template.md",
    "templates/follow-up-note.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=meeting-notes-to-actions"
  },
  {
   "id": "release-announcements",
   "title": "Release Announcements",
   "category": "Studio / Publishing",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every channel tells the same release story: each post is drafted from the one release record, checked claim by claim and link by link, and held for a single approval before anything goes out.",
   "fileCount": 9,
   "totalBytes": 33603,
   "bundleHash": "095d2e7fce0c00f347592cb22b74320e82b64147c10e902a3cb25034bbf7a0b5",
   "files": [
    "SKILL.md",
    "examples/the-held-announcement-set.md",
    "examples/the-patch-release-set.md",
    "reference/approval-and-posting-log.md",
    "reference/channel-shapes.md",
    "reference/link-and-claim-checks.md",
    "reference/the-release-record.md",
    "templates/announcement-set.template.md",
    "templates/approval-and-posting-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=release-announcements"
  },
  {
   "id": "dependency-update-watch",
   "title": "Dependency Update Watch",
   "category": "Studio / Shipping",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Dependency drift stops arriving as emergencies: each scheduled pass leaves a dated report with findings triaged by risk, a one-at-a-time upgrade order, and the tests and the way back written for every step.",
   "fileCount": 9,
   "totalBytes": 35392,
   "bundleHash": "c2ebf204a30dcd085d0d9e878134ee9b36e9b8a6bbb79f00a3a8d481bbbaeb1a",
   "files": [
    "SKILL.md",
    "examples/the-advisory-led-pass.md",
    "examples/the-quiet-month-pass.md",
    "reference/advisories-and-breaking-changes.md",
    "reference/reading-the-manifest-and-lockfile.md",
    "reference/safe-upgrade-order.md",
    "reference/triage-by-risk.md",
    "templates/dependency-report.template.md",
    "templates/upgrade-plan.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=dependency-update-watch"
  },
  {
   "id": "data-handling-rules",
   "title": "Data Handling Rules",
   "category": "Agent Safety and Governance",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Everything your agent touches gets a class and a written rule: public, internal, personal, or secret, each with storing, sending, and removal covered, and every current violation flagged with a proposed fix.",
   "fileCount": 9,
   "totalBytes": 36853,
   "bundleHash": "83460cf113744472f61fe33af9aaf3e6a39293ba75a4b0f9246d56773b7bf45d",
   "files": [
    "SKILL.md",
    "examples/the-client-file-handover/WALKTHROUGH.md",
    "examples/the-support-inbox-pass/WALKTHROUGH.md",
    "reference/classifying-edge-cases.md",
    "reference/flagging-violations.md",
    "reference/handling-rules-by-class.md",
    "reference/the-four-classes.md",
    "templates/classification-sheet.template.md",
    "templates/violation-report.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=data-handling-rules"
  },
  {
   "id": "tool-output-verification",
   "title": "Tool Output Verification",
   "category": "Agent Safety and Governance",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A tool result stops going straight into your work: shape and range checks, a second source for the facts the next step leans on, and a known-answer probe stand between the result and the action, and failures are held instead of acted on.",
   "fileCount": 9,
   "totalBytes": 38662,
   "bundleHash": "c33191fe57db4690f0bcd852382c3ea11ffde5182d244870f5c75c2307dd5097",
   "files": [
    "SKILL.md",
    "examples/the-doubled-price/WALKTHROUGH.md",
    "examples/the-missing-record/WALKTHROUGH.md",
    "reference/cross-source-confirmation.md",
    "reference/holding-failures.md",
    "reference/known-answer-probes.md",
    "reference/schema-and-range-checks.md",
    "templates/hold-report.template.md",
    "templates/verification-plan.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=tool-output-verification"
  },
  {
   "id": "source-archiving",
   "title": "Source Archiving",
   "category": "Data, Files, and Research",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A claim stops resting on a link and a memory: every source you rely on is saved as full page text with its address, the date taken, and a citation record, so it can be re-checked against what the page said when you read it.",
   "fileCount": 9,
   "totalBytes": 32885,
   "bundleHash": "27fe8a9eea88c1fbeac634680f6e7cafe683441e54a88c3d7af584a918d464df",
   "files": [
    "SKILL.md",
    "examples/the-price-page-behind-an-estimate.md",
    "examples/the-returns-window-that-moved.md",
    "reference/archive-maintenance.md",
    "reference/capture-and-storage.md",
    "reference/citation-records.md",
    "reference/rechecking-a-claim.md",
    "templates/archive-entry.template.md",
    "templates/citation-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=source-archiving"
  },
  {
   "id": "service-menu-builder",
   "title": "Service Menu Builder",
   "category": "Local Services / Marketing",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Your services stop living in your head: one menu draft with each service's includes and excludes written plainly, the real set price where you have set one, and an honest \"priced after a look\" where you have not, ready to paste into a listing or page.",
   "fileCount": 9,
   "totalBytes": 41410,
   "bundleHash": "5c26c21e18007d8f7e9f2d11be3185e1b0cd3c0d3eb307e928e66ac607505446",
   "files": [
    "SKILL.md",
    "examples/hauling-and-cleanup-menu/WALKTHROUGH.md",
    "examples/lawn-and-yard-menu/WALKTHROUGH.md",
    "reference/gathering-the-real-services.md",
    "reference/making-the-menu-readable.md",
    "reference/pricing-only-what-is-set.md",
    "reference/writing-includes-and-excludes.md",
    "templates/service-intake.template.md",
    "templates/service-menu.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=service-menu-builder"
  },
  {
   "id": "job-completion-handover",
   "title": "Job Completion Handover",
   "category": "Local Services / Field Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "\"Done\" stops being something remembered: every finished job closes with a walkthrough checklist done with the customer, final photos logged, the warranty note handed over in writing exactly as you set it, and a sign-off on file.",
   "fileCount": 9,
   "totalBytes": 36134,
   "bundleHash": "6aabbe5c724b628302a0a9f4cec191099144440652a09c4320e471f12f900a74",
   "files": [
    "SKILL.md",
    "examples/bathroom-refit-handover/WALKTHROUGH.md",
    "examples/fence-build-handover/WALKTHROUGH.md",
    "reference/sign-off-and-filing.md",
    "reference/the-final-photo-log.md",
    "reference/the-walkthrough-checklist.md",
    "reference/warranty-note-and-care-instructions.md",
    "templates/handover-record.template.md",
    "templates/walkthrough-checklist.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=job-completion-handover"
  },
  {
   "id": "weather-reschedule-planner",
   "title": "Weather Reschedule Planner",
   "category": "Local Services / Field Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A weather-killed day stops taking the week with it: affected jobs re-planned with new dates proposed in promise order, materials and crew knock-ons noted, and the customer messages drafted in send order for your approval.",
   "fileCount": 9,
   "totalBytes": 42977,
   "bundleHash": "0b2a67af147a80994af9d7fc3ca4cba14802bcd3d397e2cbe6edaeb19ff980b2",
   "files": [
    "SKILL.md",
    "examples/cold-snap-paint-week/WALKTHROUGH.md",
    "examples/rain-day-three-jobs/WALKTHROUGH.md",
    "reference/customer-messages-in-send-order.md",
    "reference/knock-ons-materials-and-crew.md",
    "reference/promise-order-and-holds.md",
    "reference/weather-thresholds-and-calls.md",
    "templates/customer-message-set.template.md",
    "templates/reschedule-plan.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=weather-reschedule-planner"
  },
  {
   "id": "customer-check-in-messages",
   "title": "Customer Check-In Messages",
   "category": "Local Services / Reputation",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Past customers hear from you at the right moment, with a check-in traced to their own job record (a wear item, a season that matters for their work), drafted in your voice and logged so nobody is contacted twice inside the set period.",
   "fileCount": 9,
   "totalBytes": 37015,
   "bundleHash": "c94c20b62eb407d9ab47ce5499aca5e7053354939c915a5ec92ce2fcf43c05a9",
   "files": [
    "SKILL.md",
    "examples/furnace-filter-winter-check-in/WALKTHROUGH.md",
    "examples/valley-repair-autumn-check-in/WALKTHROUGH.md",
    "reference/drafting-the-check-in.md",
    "reference/the-check-in-log.md",
    "reference/timing-and-spacing.md",
    "reference/tracing-the-topic.md",
    "templates/check-in-log-entry.template.md",
    "templates/check-in-message.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=customer-check-in-messages"
  },
  {
   "id": "podcast-episode-package",
   "title": "Podcast Episode Package",
   "category": "Creator and Audience",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "One finished recording becomes its whole publishing package: show notes, a chapter list, a cleaned transcript record, and the episode description, all drawn only from what was actually said, held for your one approval before anything publishes.",
   "fileCount": 9,
   "totalBytes": 31037,
   "bundleHash": "43adc7c7a3dec175f56ab0d42b62b8d0f15b055b4390225c1448af55384a78ff",
   "files": [
    "SKILL.md",
    "examples/the-bakery-interview/WALKTHROUGH.md",
    "examples/the-solo-episode/WALKTHROUGH.md",
    "reference/chapters-and-timestamps.md",
    "reference/cleaning-the-transcript.md",
    "reference/notes-and-description.md",
    "reference/source-and-scope.md",
    "templates/episode-brief.template.md",
    "templates/package-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=podcast-episode-package"
  },
  {
   "id": "deposit-terms-setup",
   "title": "Deposit Terms Setup",
   "category": "Local Services / Money",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "No job starts on terms held only in memory: your deposit share and materials-upfront rule set per job type, written into the quote wording the customer sees before work starts, and recorded per job as agreed.",
   "fileCount": 9,
   "totalBytes": 33586,
   "bundleHash": "2c677f6ade81fe0e7882511e9dee36fdf21deff62c70bab801944c6ef300b5a8",
   "files": [
    "SKILL.md",
    "examples/the-fence-job-materials-upfront/WALKTHROUGH.md",
    "examples/the-flooring-job-terms-changed/WALKTHROUGH.md",
    "reference/customer-wording.md",
    "reference/materials-upfront-rule.md",
    "reference/terms-by-job-type.md",
    "reference/the-deposit-record.md",
    "templates/job-deposit-record.template.md",
    "templates/terms-by-job-type.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=deposit-terms-setup"
  },
  {
   "id": "agent-escalation-handling",
   "title": "Agent Escalation Handling",
   "category": "Agent Operations",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Work stops cleanly at the edge of the brief instead of guessing past it: the operator gets one escalation note carrying the evidence and one exact question, and the agent does only the safe work while it waits.",
   "fileCount": 9,
   "totalBytes": 39448,
   "bundleHash": "73cff75ad35ad77786f25600bd913c0087cc22303368cbdf0750ae1db1db3b7a",
   "files": [
    "SKILL.md",
    "examples/the-invoice-over-the-line/WALKTHROUGH.md",
    "examples/the-reply-that-needed-a-promise/WALKTHROUGH.md",
    "reference/resuming-after-a-decision.md",
    "reference/safe-work-while-waiting.md",
    "reference/stop-conditions.md",
    "reference/writing-the-escalation-note.md",
    "templates/brief-with-stop-conditions.template.md",
    "templates/escalation-note.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-escalation-handling"
  },
  {
   "id": "multi-agent-job-split",
   "title": "Multi-Agent Job Split",
   "category": "Agent Operations",
   "priceUSD": 19,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "One big job stops coming back with doubled, missing, or conflicting pieces: it is split into work packages with hard boundaries before work starts, every agent writes to one shared record, and a merge check reconciles the parts before anything is delivered.",
   "fileCount": 9,
   "totalBytes": 37174,
   "bundleHash": "871a9051b45196eeceff2256bc41392bd3b67423d172dac7bf18b93d32243c3c",
   "files": [
    "SKILL.md",
    "examples/the-help-center-rebuild/WALKTHROUGH.md",
    "examples/the-supplier-price-audit/WALKTHROUGH.md",
    "reference/drawing-boundaries.md",
    "reference/the-merge-check.md",
    "reference/the-shared-record.md",
    "reference/work-package-briefs.md",
    "templates/job-split-plan.template.md",
    "templates/merge-check.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=multi-agent-job-split"
  },
  {
   "id": "privacy-consent-records",
   "title": "Privacy Consent Records",
   "category": "Agent Safety and Governance",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "You can say from a record who agreed to what: one consent ledger per person and per scope, checked before any details are used, with withdrawals recorded and honoured across every store the agent touches.",
   "fileCount": 9,
   "totalBytes": 34935,
   "bundleHash": "a8e2d6442119935cab4432b29b4408caae781929fdbb20db74944afcf6109e8d",
   "files": [
    "SKILL.md",
    "examples/the-new-client-intake.md",
    "examples/the-withdrawal-that-spread.md",
    "reference/capturing-consent.md",
    "reference/checking-and-expiry.md",
    "reference/ledger-fields.md",
    "reference/withdrawal-and-propagation.md",
    "templates/consent-ledger-entry.template.md",
    "templates/withdrawal-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=privacy-consent-records"
  },
  {
   "id": "uptime-and-status-checks",
   "title": "Uptime and Status Checks",
   "category": "Studio / Shipping",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "You learn a service is down from a dated record, not from a user: scheduled checks run the steps a user would take, every miss follows a written retry, record, escalate ladder, and the service's state on any day can be read back.",
   "fileCount": 9,
   "totalBytes": 35681,
   "bundleHash": "fda0bb2592a5abe1d929cddc51727747e6e5d4d4c4db027f7233c84eee5170db",
   "files": [
    "SKILL.md",
    "examples/the-morning-after-a-deploy/WALKTHROUGH.md",
    "examples/the-slow-afternoon-outage/WALKTHROUGH.md",
    "reference/check-list-design.md",
    "reference/failure-ladder.md",
    "reference/reading-results-honestly.md",
    "reference/status-record.md",
    "templates/service-check-list.template.md",
    "templates/status-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=uptime-and-status-checks"
  },
  {
   "id": "user-guide-writing",
   "title": "User Guide Writing",
   "category": "Studio / Publishing",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Your guide describes the tool you actually shipped: every screen walked, every step written in the words the screens use and checked by doing it in the tool, and anything the tool does not do cut out.",
   "fileCount": 9,
   "totalBytes": 34411,
   "bundleHash": "47c53c4cafeb9af3604b6ea00f0f7405138542c25618b5590148156780b2ae2c",
   "files": [
    "SKILL.md",
    "examples/repairdesk-first-guide.md",
    "examples/shelfcount-first-guide.md",
    "reference/checking-every-step.md",
    "reference/keeping-the-guide-current.md",
    "reference/reading-the-tool-first.md",
    "reference/task-order-and-sections.md",
    "templates/guide-outline.template.md",
    "templates/step-check-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=user-guide-writing"
  },
  {
   "id": "research-comparison-table",
   "title": "Research Comparison Table",
   "category": "Data, Files, and Research",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "The choice stops resting on figures nobody can trace: options compared on the same rows and the same basis, every cell tied to a named source with its date, unknowns left blank and labelled, and the differences that decide it summarised under the table.",
   "fileCount": 9,
   "totalBytes": 41620,
   "bundleHash": "bb0bf11b20d89f6bc89f0db5c782c51adc9378905b64a6c90d674c213924fac6",
   "files": [
    "SKILL.md",
    "examples/backup-tools-for-a-small-studio.md",
    "examples/invoicing-services-for-a-solo-operator.md",
    "reference/choosing-rows-and-options.md",
    "reference/handling-unknowns-and-conflicts.md",
    "reference/sourcing-every-cell.md",
    "reference/writing-the-deciding-differences.md",
    "templates/comparison-brief.template.md",
    "templates/comparison-table.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=research-comparison-table"
  },
  {
   "id": "job-profit-review",
   "title": "Job Profit Review",
   "category": "Local Services / Money",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "You find out what a closed job actually made: estimate set against actual cost line by line, expenses and callbacks counted in full, and each lesson written into the next estimate as a changed line for your approval.",
   "fileCount": 9,
   "totalBytes": 35125,
   "bundleHash": "e7b3cbdf0135941d09278bded3c4c7737df998b149b27ada70d30d0db28570ba",
   "files": [
    "SKILL.md",
    "examples/gravel-driveway-regrade/WALKTHROUGH.md",
    "examples/tree-removal-that-ran-long/WALKTHROUGH.md",
    "reference/counting-the-full-cost.md",
    "reference/estimate-against-actual.md",
    "reference/finding-the-lesson.md",
    "reference/turning-lessons-into-estimate-lines.md",
    "templates/next-estimate-change-log.template.md",
    "templates/profit-review-sheet.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=job-profit-review"
  },
  {
   "id": "subcontractor-coordination",
   "title": "Subcontractor Coordination",
   "category": "Local Services / Field Operations",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A sub arrives with nothing left to memory: a scope note the sub agreed to, the schedule and site rules in writing, a payment record for the sub work, and the customer told in advance who is doing what.",
   "fileCount": 9,
   "totalBytes": 35812,
   "bundleHash": "78c1542d0747761a9e06cb75bb67496fbe9b2510e5721ccc8b4530b45c9fea3b",
   "files": [
    "SKILL.md",
    "examples/bathroom-tile-plumber-sub/WALKTHROUGH.md",
    "examples/porch-rebuild-electrician-sub/WALKTHROUGH.md",
    "reference/customer-line-on-who-does-what.md",
    "reference/payment-record-for-sub-work.md",
    "reference/schedule-and-site-rules-in-writing.md",
    "reference/scope-note-the-sub-agrees-to.md",
    "templates/coordination-record.template.md",
    "templates/subcontractor-brief.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=subcontractor-coordination"
  },
  {
   "id": "equipment-maintenance-log",
   "title": "Equipment Maintenance Log",
   "category": "Local Services / Field Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Wear shows up on paper before it stops a job: one maintenance record for every tool, vehicle, and machine, with service intervals tracked, repairs logged at their real costs, and downtime noted.",
   "fileCount": 9,
   "totalBytes": 32825,
   "bundleHash": "371af5b8baccf56c8bd7cfeee633ad4f4e74e1c02980f28c9a040b328cbe9b8b",
   "files": [
    "SKILL.md",
    "examples/log-splitter-first-season-on-record.md",
    "examples/mower-belt-failure-caught-by-the-log.md",
    "reference/equipment-record-fields.md",
    "reference/reading-the-record-for-failures.md",
    "reference/repair-and-downtime-logging.md",
    "reference/service-intervals-hours-or-date.md",
    "templates/equipment-register.template.md",
    "templates/maintenance-entry.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=equipment-maintenance-log"
  },
  {
   "id": "google-profile-updates",
   "title": "Google Profile Updates",
   "category": "Local Services / Marketing",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Your Google profile matches the real business again: hours and services checked against what you actually do on a set schedule, photos picked from finished jobs, and review replies drafted in your voice for your approval before anything goes live.",
   "fileCount": 9,
   "totalBytes": 29819,
   "bundleHash": "d6a05c16da20c1aded409a3a46ebddf0cc49041f2003ec25fc78ad48e72d4e2f",
   "files": [
    "SKILL.md",
    "examples/holiday-hours-roofing-update/WALKTHROUGH.md",
    "examples/review-replies-and-service-list-fix/WALKTHROUGH.md",
    "reference/photo-picks-from-finished-jobs.md",
    "reference/profile-facts-check.md",
    "reference/review-replies-in-the-operators-voice.md",
    "reference/update-schedule-and-log.md",
    "templates/profile-update-plan.template.md",
    "templates/review-reply-draft.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=google-profile-updates"
  },
  {
   "id": "short-form-topic-bank",
   "title": "Short-Form Topic Bank",
   "category": "Creator and Audience",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A posting day starts from a stocked bank instead of a blank page: every topic drawn from your real work records, carrying its hook, the record it came from, and its status, with new ideas checked so no topic is filmed twice.",
   "fileCount": 9,
   "totalBytes": 30956,
   "bundleHash": "22262b950e15f4b0db85ace3d06ec65e8d93b316fe256ebedd3944af86060fa4",
   "files": [
    "SKILL.md",
    "examples/repair-crew-question-bank.md",
    "examples/studio-build-log-bank.md",
    "reference/keeping-the-bank-current.md",
    "reference/reading-work-records.md",
    "reference/statuses-and-dedupe.md",
    "reference/writing-the-hook.md",
    "templates/topic-bank.template.md",
    "templates/topic-entry.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=short-form-topic-bank"
  },
  {
   "id": "new-customer-welcome-pack",
   "title": "New Customer Welcome Pack",
   "category": "Local Services / Sales",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every new customer gets the same answers before the first job: one welcome pack built from your real records, covering the services in plain words, the terms as set, how to reach you, and what to expect on the day, held for your approval before it sends.",
   "fileCount": 9,
   "totalBytes": 35127,
   "bundleHash": "c9c356cc33c49df5ec580eb14d49bb1fa1a5dc42de932499672f5e5f36d35129",
   "files": [
    "SKILL.md",
    "examples/roof-valley-repair-first-job/WALKTHROUGH.md",
    "examples/yard-cleanup-and-haul-first-job/WALKTHROUGH.md",
    "reference/services-in-plain-words.md",
    "reference/terms-contact-and-timing.md",
    "reference/what-goes-in-the-pack.md",
    "reference/what-to-expect-on-the-day.md",
    "templates/pack-assembly-checklist.template.md",
    "templates/welcome-pack.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=new-customer-welcome-pack"
  },
  {
   "id": "agent-config-versioning",
   "title": "Agent Config Versioning",
   "category": "Agent Operations",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "When an agent's behavior changes, you can say exactly when it changed, why, and what the earlier wording was, and roll back to that earlier version whole when a change goes wrong.",
   "fileCount": 9,
   "totalBytes": 42388,
   "bundleHash": "26ca48fb602c10d01cdf716e5a16b6dd7fd67c40f3ad2e74da81d6dbdcb180b0",
   "files": [
    "SKILL.md",
    "examples/the-broken-briefing/WALKTHROUGH.md",
    "examples/the-policy-tightening/WALKTHROUGH.md",
    "reference/rollback-procedure.md",
    "reference/version-record.md",
    "reference/version-storage-and-naming.md",
    "reference/writing-the-diff.md",
    "templates/rollback-record.template.md",
    "templates/version-entry.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-config-versioning"
  },
  {
   "id": "scheduled-report-builder",
   "title": "Scheduled Report Builder",
   "category": "Agent Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Your recurring report comes out in the same shape every time, every figure traced to the record behind it, and a missing record named as a gap instead of quietly filled.",
   "fileCount": 9,
   "totalBytes": 37317,
   "bundleHash": "1e585d8790ad9b46e8774e2c7a5af647d547add53c45227f4d926ef790d70583",
   "files": [
    "SKILL.md",
    "examples/the-monthly-cost-roundup/WALKTHROUGH.md",
    "examples/the-weekly-operations-summary/WALKTHROUGH.md",
    "reference/fixed-shape-and-sections.md",
    "reference/gaps-and-missing-records.md",
    "reference/review-and-approval.md",
    "reference/tracing-figures-to-records.md",
    "templates/report-spec.template.md",
    "templates/scheduled-report.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=scheduled-report-builder"
  },
  {
   "id": "secrets-in-transit-check",
   "title": "Secrets in Transit Check",
   "category": "Agent Safety and Governance",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "You can see every leg a secret travels between tools, agents, and people, each leg recorded with a plain risk call and a safer route, working from labels and locations only and never handling a real value.",
   "fileCount": 9,
   "totalBytes": 39756,
   "bundleHash": "97076d088b60934321a5832634bcc90900c176824bb06be1fe46118950709ce8",
   "files": [
    "SKILL.md",
    "examples/the-debug-handoff/WALKTHROUGH.md",
    "examples/the-weekend-handover/WALKTHROUGH.md",
    "reference/reading-transit-records.md",
    "reference/risk-calls-on-a-path.md",
    "reference/safer-routes.md",
    "reference/where-secrets-get-copied.md",
    "templates/safer-route-plan.template.md",
    "templates/transit-path-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=secrets-in-transit-check"
  },
  {
   "id": "incident-comms-drafts",
   "title": "Incident Comms Drafts",
   "category": "Studio / Publishing",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "While an incident is live, each outward update is drafted from the incident record in plain words, what happened, what is affected, and when the next update comes, and every draft is held for your approval before it goes out.",
   "fileCount": 9,
   "totalBytes": 39214,
   "bundleHash": "ea5430dec6b292ea5e5ae9c11e811868373191dffb291ae9bae307041988c33c",
   "files": [
    "SKILL.md",
    "examples/checkout-failure-live-updates.md",
    "examples/sign-in-slowdown-live-updates.md",
    "reference/corrections-and-closing.md",
    "reference/plain-words-and-tone.md",
    "reference/the-incident-record.md",
    "reference/update-cadence-and-channels.md",
    "templates/incident-record.template.md",
    "templates/message-draft-set.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=incident-comms-drafts"
  },
  {
   "id": "beta-feedback-loop",
   "title": "Beta Feedback Loop",
   "category": "Studio / Shipping",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every beta report lands in one triaged record tied to the build it came from, duplicates merged and severity called from its effect, so every fix can be traced to the release that carried it and closed only when a reporter confirms it landed.",
   "fileCount": 9,
   "totalBytes": 40730,
   "bundleHash": "784a948cb8720e4d5d8084ee7000db7a9e7771a57cea964198eb441c680fe128",
   "files": [
    "SKILL.md",
    "examples/the-duplicate-wave/WALKTHROUGH.md",
    "examples/the-export-crash/WALKTHROUGH.md",
    "reference/logging-and-versioning.md",
    "reference/merging-duplicates.md",
    "reference/severity-by-effect.md",
    "reference/tracing-fixes-to-releases.md",
    "templates/feedback-record.template.md",
    "templates/release-feedback-summary.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=beta-feedback-loop"
  },
  {
   "id": "csv-to-database-import",
   "title": "CSV to Database Import",
   "category": "Data, Files, and Research",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A CSV becomes database rows under a column mapping you approved before anything loaded, bad rows set aside in a named rejects file instead of dropped, and a row-count reconciliation that proves the import complete.",
   "fileCount": 9,
   "totalBytes": 34269,
   "bundleHash": "50e1891d876d4323bce59f96a4e9ab30356eab42885727cd3518429e025c730e",
   "files": [
    "SKILL.md",
    "examples/member-list-import/WALKTHROUGH.md",
    "examples/supplier-parts-import/WALKTHROUGH.md",
    "reference/loading-safely.md",
    "reference/rejects-and-reconciliation.md",
    "reference/validation-rules.md",
    "reference/writing-the-mapping.md",
    "templates/column-mapping.template.md",
    "templates/import-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=csv-to-database-import"
  },
  {
   "id": "pre-job-site-checklist",
   "title": "Pre-Job Site Checklist",
   "category": "Local Services / Field Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Tomorrow's job gets checked today: access confirmed, materials on hand counted against the job record, the customer confirmation drafted, weather glanced at, and anything short raised while there is still time to fix it.",
   "fileCount": 9,
   "totalBytes": 34927,
   "bundleHash": "c745e67aacfe666b1998f6fda222a11a45b54b85f17e6eb146529853f6c3fe70",
   "files": [
    "SKILL.md",
    "examples/fence-and-gate-day-before/WALKTHROUGH.md",
    "examples/roof-valley-repair-day-before/WALKTHROUGH.md",
    "reference/access-and-entry.md",
    "reference/customer-confirmation.md",
    "reference/materials-count-against-the-record.md",
    "reference/weather-and-day-fit.md",
    "templates/confirmation-message.template.md",
    "templates/site-checklist.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=pre-job-site-checklist"
  },
  {
   "id": "service-area-pricing-zones",
   "title": "Service Area Pricing Zones",
   "category": "Local Services / Money",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Distance stops being priced from feel: your service area becomes named zones with a written trip line for each, stated the same way in every quote, and out-of-zone jobs handled as logged exceptions instead of quiet discounts.",
   "fileCount": 9,
   "totalBytes": 34739,
   "bundleHash": "fb1d3cc60a2c0044e6af0d8bb6c19292538d449e74565609266a2b0045d76870",
   "files": [
    "SKILL.md",
    "examples/cleaning-operator-named-zones/WALKTHROUGH.md",
    "examples/hauling-operator-three-zones/WALKTHROUGH.md",
    "reference/dividing-the-area-into-zones.md",
    "reference/out-of-zone-exceptions.md",
    "reference/setting-the-trip-line-per-zone.md",
    "reference/stating-zones-in-quotes.md",
    "templates/quote-and-exception-log.template.md",
    "templates/zone-table.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=service-area-pricing-zones"
  },
  {
   "id": "complaint-handling-ladder",
   "title": "Complaint Handling Ladder",
   "category": "Local Services / Reputation",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "An unhappy customer gets a ladder, not an argument: each rung from first contact to resolution has its record, its draft reply, and its limit, and no draft ever promises more than the job's written warranty.",
   "fileCount": 9,
   "totalBytes": 34432,
   "bundleHash": "85594ab9676fbe258888651fd7beff67c6fa9808d993d398180349dd86389eaa",
   "files": [
    "SKILL.md",
    "examples/free-redo-asked-beyond-warranty/WALKTHROUGH.md",
    "examples/leak-returned-inside-warranty/WALKTHROUGH.md",
    "reference/closing-and-escalation.md",
    "reference/reading-the-job-record.md",
    "reference/reply-tone-and-limits.md",
    "reference/the-written-warranty.md",
    "templates/complaint-record.template.md",
    "templates/reply-draft.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=complaint-handling-ladder"
  },
  {
   "id": "before-after-gallery-keeping",
   "title": "Before and After Gallery Keeping",
   "category": "Local Services / Marketing",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Finished jobs become a gallery you can actually show: before and after pairs pulled from each job's own photo record, captions that state only what the record supports, and the customer's permission noted on the record before any pair is used.",
   "fileCount": 9,
   "totalBytes": 28114,
   "bundleHash": "58a0f796817938bb4bbe6059430d2111bf12cdaca8fa6bee682bab95b96cd337",
   "files": [
    "SKILL.md",
    "examples/deck-cleaning-pair-cleared-for-use/WALKTHROUGH.md",
    "examples/roof-valley-repair-pair-held-back/WALKTHROUGH.md",
    "reference/keeping-and-using-the-gallery.md",
    "reference/pairing-photos-from-the-record.md",
    "reference/permission-on-the-record.md",
    "reference/writing-captions-from-the-record.md",
    "templates/gallery-entry.template.md",
    "templates/permission-ask.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=before-after-gallery-keeping"
  },
  {
   "id": "series-and-sequels-planner",
   "title": "Series and Sequels Planner",
   "category": "Creator and Audience",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A multi-part series that agrees with itself: the arc and part list drawn from your real work, continuity notes kept for every part (what was said, what was promised), and each new part checked against them before you film.",
   "fileCount": 9,
   "totalBytes": 31454,
   "bundleHash": "fc399db0d72515c89fdf9e2e5342a8662569673b3988857f3fc0e7313a90fafb",
   "files": [
    "SKILL.md",
    "examples/raised-bed-garden-series/WALKTHROUGH.md",
    "examples/workbench-build-series/WALKTHROUGH.md",
    "reference/arc-from-real-work.md",
    "reference/checking-a-new-part.md",
    "reference/continuity-notes.md",
    "reference/sequels-and-returns.md",
    "templates/continuity-ledger.template.md",
    "templates/series-plan.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=series-and-sequels-planner"
  },
  {
   "id": "sponsorship-outreach-drafts",
   "title": "Sponsorship Outreach Drafts",
   "category": "Creator and Audience",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Sponsor outreach built on numbers you can stand behind: a one-page media sheet drawn from your own records, a pitch draft per prospect, and a sent and answered log so nobody gets pitched twice.",
   "fileCount": 9,
   "totalBytes": 29586,
   "bundleHash": "134671316d45a26c1123635aa9dc6871ec6dda4399dc76dbd52a457043c8b8f7",
   "files": [
    "SKILL.md",
    "examples/cooking-channel-return-round/WALKTHROUGH.md",
    "examples/podcast-first-sponsor-round/WALKTHROUGH.md",
    "reference/building-the-prospect-list.md",
    "reference/drafting-the-pitch.md",
    "reference/media-sheet-from-records.md",
    "reference/the-sent-and-answered-log.md",
    "templates/media-sheet.template.md",
    "templates/pitch-draft.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=sponsorship-outreach-drafts"
  },
  {
   "id": "agent-dry-run-rehearsal",
   "title": "Agent Dry Run Rehearsal",
   "category": "Agent Operations",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A new workflow earns its first live run: it rehearses against copies of your real records and hands you a step-by-step log with every outward or state-changing step flagged, so you approve exactly what it would do before it touches anything real.",
   "fileCount": 9,
   "totalBytes": 37395,
   "bundleHash": "dc7f40f1c6c70386828f1a02f93cb41e3367de27a862dad22cda8d138c90d446",
   "files": [
    "SKILL.md",
    "examples/the-invoice-chase-rehearsal/WALKTHROUGH.md",
    "examples/the-job-file-tidy-rehearsal/WALKTHROUGH.md",
    "reference/copying-records-safely.md",
    "reference/flagging-steps.md",
    "reference/reading-the-rehearsal-log.md",
    "reference/when-a-rehearsal-fails.md",
    "templates/rehearsal-brief.template.md",
    "templates/rehearsal-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-dry-run-rehearsal"
  },
  {
   "id": "task-time-estimates",
   "title": "Task Time Estimates",
   "category": "Agent Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Estimates stop being guesses: every task's estimate is written before it starts and its actual time beside it when it ends, so the next estimate for the same work comes from recorded actuals and chronic misses get named.",
   "fileCount": 9,
   "totalBytes": 35498,
   "bundleHash": "2744db7b1013b74c9c73e9117a0529ccfa2ce0c33de5d8cdcba18bf506d6d2c6",
   "files": [
    "SKILL.md",
    "examples/the-inbox-that-always-ran-long/WALKTHROUGH.md",
    "examples/the-release-notes-that-came-in-early/WALKTHROUGH.md",
    "reference/estimate-records.md",
    "reference/handling-splits-and-interruptions.md",
    "reference/making-the-next-estimate.md",
    "reference/naming-chronic-misses.md",
    "templates/estimate-review.template.md",
    "templates/time-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=task-time-estimates"
  },
  {
   "id": "output-format-contracts",
   "title": "Output Format Contracts",
   "category": "Agent Safety and Governance",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Agent handoffs stop breaking two steps later: every handoff format is written down as a contract (fields, order, what must never appear in it), and every output is checked against that contract before anything downstream uses it.",
   "fileCount": 9,
   "totalBytes": 34254,
   "bundleHash": "e5b345ec340ee3a6182225518cb6449a03f95743df5bc8abaec6c4bbeb31b294",
   "files": [
    "SKILL.md",
    "examples/the-invoice-handoff/WALKTHROUGH.md",
    "examples/the-job-status-handoff/WALKTHROUGH.md",
    "reference/changing-a-contract.md",
    "reference/checking-an-output.md",
    "reference/forbidden-content.md",
    "reference/writing-a-contract.md",
    "templates/conformance-report.template.md",
    "templates/format-contract.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=output-format-contracts"
  },
  {
   "id": "vendor-and-tool-renewals",
   "title": "Vendor and Tool Renewals",
   "category": "Studio / Shipping",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "No renewal lands as a surprise charge: every subscription and tool sits in one record with its renewal date, its price, and last time's price beside it, and the keep-or-drop call is recorded before the money goes.",
   "fileCount": 9,
   "totalBytes": 41882,
   "bundleHash": "de5189866fd46c7b334b697b2513d17dac8261dc5d6020ec8fc04edd779dd3fb",
   "files": [
    "SKILL.md",
    "examples/the-look-ahead-review.md",
    "examples/the-price-rise-call.md",
    "reference/review-rhythm-and-alerts.md",
    "reference/sources-prices-and-terms.md",
    "reference/the-keep-or-drop-call.md",
    "reference/the-renewal-record.md",
    "templates/renewal-record.template.md",
    "templates/renewal-review.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=vendor-and-tool-renewals"
  },
  {
   "id": "doc-drift-checks",
   "title": "Doc Drift Checks",
   "category": "Studio / Publishing",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Your published docs stop quietly going stale: on a schedule, every claim in a guide or README is traced to the shipped build, drift is logged with the exact line it lives on, and each drifted line is fixed or cut.",
   "fileCount": 9,
   "totalBytes": 45323,
   "bundleHash": "a35b95fb113fc6c70e60bb6713f9e3ff7a9d93363921ce633449874311d02644",
   "files": [
    "SKILL.md",
    "examples/guide-drift-after-release/WALKTHROUGH.md",
    "examples/readme-drift-after-rename/WALKTHROUGH.md",
    "reference/claim-inventory-and-tracing.md",
    "reference/drift-kinds-and-severity.md",
    "reference/fix-or-cut-decisions.md",
    "reference/scheduling-and-baselines.md",
    "templates/claim-inventory.template.md",
    "templates/drift-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=doc-drift-checks"
  },
  {
   "id": "pdf-form-filling",
   "title": "PDF Form Filling",
   "category": "Data, Files, and Research",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Forms stop carrying figures from memory: every field is mapped to a named record before filling, values come from that record only, a check pass reads the filled copy back against the records, and the submitted copy is kept with its date.",
   "fileCount": 9,
   "totalBytes": 41157,
   "bundleHash": "3be693493d7104596227dda51740346c2f4974a64028985a1d0d21f3cbb82d7b",
   "files": [
    "SKILL.md",
    "examples/event-permit-application.md",
    "examples/vendor-registration-form.md",
    "reference/field-mapping.md",
    "reference/keeping-the-submitted-copy.md",
    "reference/reading-the-records.md",
    "reference/the-check-pass.md",
    "templates/field-mapping.template.md",
    "templates/submission-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=pdf-form-filling"
  },
  {
   "id": "delivery-and-dropoff-runs",
   "title": "Delivery and Dropoff Runs",
   "category": "Local Services / Field Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A missed delivery stops being an argument: the day is planned from the job records with load order and stop order written down, a customer message drafted per stop, and a proof-of-drop note at every stop, so any miss traces to the plan or the road.",
   "fileCount": 9,
   "totalBytes": 30179,
   "bundleHash": "b88031f6da7887deac985f50fdf8eee115603c545aca8f2db7ba095163dc680c",
   "files": [
    "SKILL.md",
    "examples/five-stop-round-missed-delivery/WALKTHROUGH.md",
    "examples/six-stop-firewood-round/WALKTHROUGH.md",
    "reference/customer-messages-per-stop.md",
    "reference/load-order-and-stop-order.md",
    "reference/proof-of-drop-and-tracing.md",
    "reference/reading-the-job-records.md",
    "templates/proof-of-drop-log.template.md",
    "templates/run-plan.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=delivery-and-dropoff-runs"
  },
  {
   "id": "rental-and-borrowed-gear-log",
   "title": "Rental and Borrowed Gear Log",
   "category": "Local Services / Field Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Returns and damage questions get a record instead of an argument: every rented or borrowed item logged with what it is, whose it is, the deposit and due-back date, and its condition noted out and back with photos from the job record.",
   "fileCount": 9,
   "totalBytes": 37229,
   "bundleHash": "6ae5651d82ca911788438c930dab15baf0c92c687dd748d64c128c7172250015",
   "files": [
    "SKILL.md",
    "examples/borrowed-scaffold-tower-house-job.md",
    "examples/rented-mini-excavator-drainage-job.md",
    "reference/check-out-and-condition-notes.md",
    "reference/deposits-due-dates-and-fees.md",
    "reference/gear-log-fields.md",
    "reference/return-check-and-damage-questions.md",
    "templates/check-out-return-entry.template.md",
    "templates/gear-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=rental-and-borrowed-gear-log"
  },
  {
   "id": "receipts-reconciliation",
   "title": "Receipts Reconciliation",
   "category": "Local Services / Money",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "The week's money in is proven, not assumed: cash, Cash App, and card receipts matched line by line against the job records, every gap named against the job it belongs to, and nothing written off without your recorded decision.",
   "fileCount": 9,
   "totalBytes": 34517,
   "bundleHash": "90dd4028350548241c396c3206e7057c5aab04632daf6b34cf5a7e667ba85ae6",
   "files": [
    "SKILL.md",
    "examples/five-jobs-one-short-payment.md",
    "examples/split-payments-fees-and-one-unknown.md",
    "reference/gaps-named-never-written-off.md",
    "reference/matching-line-by-line.md",
    "reference/reading-payment-records.md",
    "reference/the-job-record-baseline.md",
    "templates/gap-note.template.md",
    "templates/weekly-reconciliation-sheet.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=receipts-reconciliation"
  },
  {
   "id": "referral-partner-list",
   "title": "Referral Partner List",
   "category": "Local Services / Marketing",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Business-to-business referrals stop depending on memory: one working list of who sends what kind of work, what has been sent each way, the thank-you kept current, and one nudge drafted when a good partner has gone quiet.",
   "fileCount": 9,
   "totalBytes": 39755,
   "bundleHash": "e8150d6938e8caba4e645c05eeffa8209d3ed5b54892774a6ef22da3aa1e0b7a",
   "files": [
    "SKILL.md",
    "examples/cleaner-agent-circle-and-a-quiet-partner/WALKTHROUGH.md",
    "examples/roofer-plumber-two-way-trade/WALKTHROUGH.md",
    "reference/thank-yous-that-stay-current.md",
    "reference/the-partner-list.md",
    "reference/what-counts-as-a-referral.md",
    "reference/when-a-partner-goes-quiet.md",
    "templates/nudge-and-thank-you.template.md",
    "templates/partner-entry.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=referral-partner-list"
  },
  {
   "id": "live-session-prep",
   "title": "Live Session Prep",
   "category": "Creator and Audience",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A live session starts planned instead of improvised: the run order written from your real work, the setup checked before you go live, and the list of clips and follow-ups made before the session ends, not from memory after.",
   "fileCount": 9,
   "totalBytes": 33874,
   "bundleHash": "e1ff5d1a1a5194c15457567d4d3415b0ae0efc13f14aad7e47324fdc2566b463",
   "files": [
    "SKILL.md",
    "examples/sketching-tutorial-live/WALKTHROUGH.md",
    "examples/workshop-demo-live/WALKTHROUGH.md",
    "reference/planning-clips-and-follow-ups.md",
    "reference/the-setup-check.md",
    "reference/working-from-real-work.md",
    "reference/writing-the-run-order.md",
    "templates/session-plan.template.md",
    "templates/setup-check.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=live-session-prep"
  },
  {
   "id": "comment-to-content-ideas",
   "title": "Comment to Content Ideas",
   "category": "Creator and Audience",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Your next filming list comes from your audience's own words: real questions and requests from comments logged verbatim, grouped by theme, and every filming item naming the comments that asked for it.",
   "fileCount": 9,
   "totalBytes": 34239,
   "bundleHash": "ffbf204e0cc07ecfa7beeadfa5679a10652bdaeeff311465c6053227f6597724",
   "files": [
    "SKILL.md",
    "examples/beginner-baking-follow-ups/WALKTHROUGH.md",
    "examples/workshop-tool-questions/WALKTHROUGH.md",
    "reference/building-the-filming-list.md",
    "reference/grouping-by-theme.md",
    "reference/keeping-the-idea-log-current.md",
    "reference/logging-comments-verbatim.md",
    "templates/comment-idea-log.template.md",
    "templates/filming-list.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=comment-to-content-ideas"
  },
  {
   "id": "model-and-tool-swap-checks",
   "title": "Model and Tool Swap Checks",
   "category": "Agent Operations",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A model or tool change stops shipping silent surprises: one fixed set of standard tasks runs on the old setup and the new one before anything goes live, every difference is named in plain words, and the rollback note is already written if the swap has to come back out.",
   "fileCount": 9,
   "totalBytes": 42595,
   "bundleHash": "68814a48c0cc414029cff0792dda5c2c9bb60e8ed20536ceeae4196d6b9bc89d",
   "files": [
    "SKILL.md",
    "examples/the-model-upgrade/WALKTHROUGH.md",
    "examples/the-search-tool-change/WALKTHROUGH.md",
    "reference/reading-the-differences.md",
    "reference/rollback-note-and-restore.md",
    "reference/the-standard-task-set.md",
    "reference/the-swap-record.md",
    "templates/rollback-note.template.md",
    "templates/swap-check.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=model-and-tool-swap-checks"
  },
  {
   "id": "standing-instructions-review",
   "title": "Standing Instructions Review",
   "category": "Agent Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Standing instructions stop quietly going stale: on a schedule you set, every rule is checked against the record of what actually happened and marked holding, stale, in conflict, or without evidence, with any change drafted for your approval and nothing edited silently.",
   "fileCount": 9,
   "totalBytes": 45558,
   "bundleHash": "caa3e32f92e9a8cd9b77ba82395f89216062bab5f9c935d1056550d3c6321201",
   "files": [
    "SKILL.md",
    "examples/the-conflicting-reply-rules/WALKTHROUGH.md",
    "examples/the-stale-hold-rule/WALKTHROUGH.md",
    "reference/drafting-the-change.md",
    "reference/finding-staleness-and-conflict.md",
    "reference/reading-the-run-record.md",
    "reference/review-record.md",
    "templates/change-draft.template.md",
    "templates/review-sheet.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=standing-instructions-review"
  },
  {
   "id": "data-retention-schedule",
   "title": "Data Retention Schedule",
   "category": "Agent Safety and Governance",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Records stop being kept forever by default: every record type gets a written keep period and review date, and the deletion pass actually runs on schedule, under its own approval, with every pass logged, so what is kept and when it last went can always be answered.",
   "fileCount": 9,
   "totalBytes": 34157,
   "bundleHash": "1a335c91f371ce817e8cbb4d181a0c6175fb9e132a349eba5e5e07a5010fe678",
   "files": [
    "SKILL.md",
    "examples/first-schedule-cleanup/WALKTHROUGH.md",
    "examples/quarterly-deletion-pass/WALKTHROUGH.md",
    "reference/deletion-pass-procedure.md",
    "reference/record-types-and-periods.md",
    "reference/retention-schedule-record.md",
    "reference/review-and-logging.md",
    "templates/deletion-pass-log.template.md",
    "templates/retention-schedule.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=data-retention-schedule"
  },
  {
   "id": "public-corrections-log",
   "title": "Public Corrections Log",
   "category": "Studio / Publishing",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A published mistake stops being a quiet edit nobody can trace: the original is fixed in place, then one plain-words log entry per correction is published and kept, saying what was wrong, what it says now, and where it was fixed.",
   "fileCount": 9,
   "totalBytes": 38000,
   "bundleHash": "435d9ec37ec149528d39585c6894ee135d7979c4cef4efd663b989960519992e",
   "files": [
    "SKILL.md",
    "examples/the-wrong-date/WALKTHROUGH.md",
    "examples/the-wrong-price/WALKTHROUGH.md",
    "reference/the-log-itself.md",
    "reference/verifying-the-fix.md",
    "reference/where-the-log-lives.md",
    "reference/writing-the-correction.md",
    "templates/correction-entry.template.md",
    "templates/published-correction-note.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=public-corrections-log"
  },
  {
   "id": "archive-and-sunset-products",
   "title": "Archive and Sunset Products",
   "category": "Studio / Shipping",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Retiring a product or a version stops being a mess: the decision and stop date are recorded, the sunset notice is drafted and held for your approval, what keeps working and until when is stated plainly, the records are exported and checked before anything stops, and the stop date is honored exactly.",
   "fileCount": 9,
   "totalBytes": 43531,
   "bundleHash": "0306a635698e10b41961f1933e7feb1838d489f95db23161240da4cd304f0766",
   "files": [
    "SKILL.md",
    "examples/the-clean-retirement/WALKTHROUGH.md",
    "examples/the-version-sunset/WALKTHROUGH.md",
    "reference/export-and-retention-checklist.md",
    "reference/sunset-record.md",
    "reference/the-stop-date-and-final-shutdown.md",
    "reference/writing-the-sunset-notice.md",
    "templates/sunset-notice.template.md",
    "templates/sunset-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=archive-and-sunset-products"
  },
  {
   "id": "spreadsheet-to-report",
   "title": "Spreadsheet to Report",
   "category": "Data, Files, and Research",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A spreadsheet becomes a report a reader can act on: every figure in the prose is traced to the sheet's own cells, every total is recomputed from those cells instead of copied, and anything the sheet does not support is left out or named as missing.",
   "fileCount": 9,
   "totalBytes": 34470,
   "bundleHash": "f82a3a3e5263278bc49a61d5124f5263a35dbab590db6d55ea60ba317dd2036e",
   "files": [
    "SKILL.md",
    "examples/project-costs-summary/WALKTHROUGH.md",
    "examples/quarterly-sales-summary/WALKTHROUGH.md",
    "reference/checking-the-report.md",
    "reference/reading-the-sheet.md",
    "reference/tracing-and-recomputing.md",
    "reference/writing-the-report.md",
    "templates/figure-trace.template.md",
    "templates/report-outline.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=spreadsheet-to-report"
  },
  {
   "id": "tool-and-material-staging",
   "title": "Tool and Material Staging",
   "category": "Local Services / Field Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Tomorrow's tools and materials get staged tonight in job order, with every gap flagged and filled while the shops are still open, so the morning starts with driving to the first job instead of fetching.",
   "fileCount": 9,
   "totalBytes": 35534,
   "bundleHash": "46db52eb08b8f58d7a48b7400a6b50d0faa4e549fb582f8d9256d1dec0f0649e",
   "files": [
    "SKILL.md",
    "examples/roof-and-bathroom-staging/WALKTHROUGH.md",
    "examples/three-job-tuesday-staging/WALKTHROUGH.md",
    "reference/bench-check-and-close-out.md",
    "reference/building-the-staging-list.md",
    "reference/flagging-and-filling-gaps.md",
    "reference/loading-in-job-order.md",
    "templates/gap-and-buy-list.template.md",
    "templates/staging-sheet.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=tool-and-material-staging"
  },
  {
   "id": "end-of-day-job-log",
   "title": "End of Day Job Log",
   "category": "Local Services / Field Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every job gets closed out the same day in one log, with what was done, what is left, the photos filed against the job, and the customer's next step noted, so tomorrow starts from the log instead of from memory.",
   "fileCount": 9,
   "totalBytes": 32994,
   "bundleHash": "c8fdb2f3db97a4386a50c013f0658bb52f4f9bc086482bf79c0425c473d8da1f",
   "files": [
    "SKILL.md",
    "examples/deck-rebuild-day-two/WALKTHROUGH.md",
    "examples/three-job-cleanup-day/WALKTHROUGH.md",
    "reference/building-the-daily-log.md",
    "reference/filing-the-days-photos.md",
    "reference/next-steps-and-tomorrow-start.md",
    "reference/what-was-done-and-what-is-left.md",
    "templates/daily-job-log.template.md",
    "templates/job-closeout-entry.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=end-of-day-job-log"
  },
  {
   "id": "gift-card-and-credit-tracking",
   "title": "Gift Card and Credit Tracking",
   "category": "Local Services / Money",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every gift card, rain check, and store credit sits in one record, issued to whom, with its balance worked out redemption by redemption, so a credit is honored from the record and never argued from memory.",
   "fileCount": 9,
   "totalBytes": 29759,
   "bundleHash": "9a2b0eec87f0758781a4dc3ded4d1b420af81f687bb5a2303662fcc5ab04d80f",
   "files": [
    "SKILL.md",
    "examples/gift-card-full-redemption/WALKTHROUGH.md",
    "examples/store-credit-and-rain-check/WALKTHROUGH.md",
    "reference/expiry-and-disputes.md",
    "reference/issuing-a-credit.md",
    "reference/redeeming-and-balances.md",
    "reference/the-credit-record.md",
    "templates/credit-record.template.md",
    "templates/redemption-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=gift-card-and-credit-tracking"
  },
  {
   "id": "review-response-drafts",
   "title": "Review Response Drafts",
   "category": "Local Services / Marketing",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Public reviews get answered from the record instead of in a hurry: each review read in full, every point checked against the job's own facts, the reply drafted without inventing anything, and every draft held for your approval before it is posted.",
   "fileCount": 9,
   "totalBytes": 32414,
   "bundleHash": "e7b9b270f8a4867361f6f53dcd1b1efb60045e7c0275e585503df37db8147fd5",
   "files": [
    "SKILL.md",
    "examples/hard-fence-repair-review/WALKTHROUGH.md",
    "examples/positive-yard-cleanup-review/WALKTHROUGH.md",
    "reference/checking-against-the-job-record.md",
    "reference/drafting-from-the-record.md",
    "reference/hard-reviews-and-approval.md",
    "reference/reading-the-review-in-full.md",
    "templates/review-check-log.template.md",
    "templates/review-response-draft.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=review-response-drafts"
  },
  {
   "id": "thumbnail-and-title-tests",
   "title": "Thumbnail and Title Tests",
   "category": "Creator and Audience",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Title and thumbnail picks stop being last-minute guesses: variants are written down before publishing, the pick is reviewed after a set window against the video's own numbers, and the outcome is logged so the next choice starts from what the record shows.",
   "fileCount": 9,
   "totalBytes": 39803,
   "bundleHash": "7cb3a7c0a94b00fa1114b8ca651c4f8cd41c2f394daf01193602949b94701494",
   "files": [
    "SKILL.md",
    "examples/three-dinners-from-one-chicken/WALKTHROUGH.md",
    "examples/workbench-from-reclaimed-timber/WALKTHROUGH.md",
    "reference/reading-the-review-window.md",
    "reference/the-test-log.md",
    "reference/what-the-record-can-and-cannot-show.md",
    "reference/writing-variants-before-publishing.md",
    "templates/review-log.template.md",
    "templates/variant-sheet.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=thumbnail-and-title-tests"
  },
  {
   "id": "podcast-guest-pipeline",
   "title": "Podcast Guest Pipeline",
   "category": "Creator and Audience",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Guests run as a pipeline instead of a scramble: prospects drawn from your own network and past episodes, tracked by stage, outreach drafted and held for your approval, a prep sheet built from the guest's public work, and follow-up and clip delivery logged until they are done.",
   "fileCount": 9,
   "totalBytes": 32736,
   "bundleHash": "0058a5e681ffdb3da739bc0c1a635569936e8fe23ca166e8dcb7f34379d283cf",
   "files": [
    "SKILL.md",
    "examples/indie-maker-first-booking/WALKTHROUGH.md",
    "examples/returning-author-second-visit/WALKTHROUGH.md",
    "reference/outreach-drafts-and-approval.md",
    "reference/prep-sheet-from-public-work.md",
    "reference/prospect-sourcing-and-tracking.md",
    "reference/recording-follow-up-and-clips.md",
    "templates/guest-pipeline-record.template.md",
    "templates/guest-prep-sheet.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=podcast-guest-pipeline"
  },
  {
   "id": "new-agent-intake-checks",
   "title": "New Agent Intake Checks",
   "category": "Agent Safety and Governance",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Learn what a new agent can actually touch, what it sends and where, and how it fails, proven on copies before it ever sees a real record, with the admit or refuse call on record.",
   "fileCount": 9,
   "totalBytes": 42506,
   "bundleHash": "629489d46970cc9721f1771f3a7ef6993b3eb84d875a304667ba351df598afdb",
   "files": [
    "SKILL.md",
    "examples/inbox-triage-agent-for-a-trades-business/WALKTHROUGH.md",
    "examples/supplier-ordering-agent-for-a-small-shop/WALKTHROUGH.md",
    "reference/map-what-it-can-touch.md",
    "reference/map-what-it-sends-and-where.md",
    "reference/prove-failure-behaviour-on-copies.md",
    "reference/the-admit-or-refuse-record.md",
    "templates/intake-checklist.template.md",
    "templates/intake-decision-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=new-agent-intake-checks"
  },
  {
   "id": "agent-fleet-roster",
   "title": "Agent Fleet Roster",
   "category": "Agent Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Answer for your whole fleet from one page: every agent's job, what it can touch, who answers for it, and when its entry was last checked, kept in one living register.",
   "fileCount": 9,
   "totalBytes": 40541,
   "bundleHash": "0e3fab021022e2061f6da426764da8dd0c57eaf225b6efdce5e8a4a9de0c437a",
   "files": [
    "SKILL.md",
    "examples/first-roster-for-a-three-agent-studio/WALKTHROUGH.md",
    "examples/roster-cleanup-after-a-year-of-growth/WALKTHROUGH.md",
    "reference/keeping-the-roster-current.md",
    "reference/ownership-and-answerability.md",
    "reference/roster-fields.md",
    "reference/what-each-agent-can-touch.md",
    "templates/agent-roster-entry.template.md",
    "templates/fleet-roster.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-fleet-roster"
  },
  {
   "id": "runbook-writing",
   "title": "Runbook Writing",
   "category": "Studio / Publishing",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Turn a procedure only one person knows into a dated runbook entry a second operator can follow at night, checked step by step against the live system.",
   "fileCount": 9,
   "totalBytes": 42695,
   "bundleHash": "4ba69f557751fed3ef69ffbbcf06fd16050afbc6262b86f638cdeef060451902",
   "files": [
    "SKILL.md",
    "examples/nightly-backup-failure/WALKTHROUGH.md",
    "examples/web-service-restart/WALKTHROUGH.md",
    "reference/anatomy-of-a-runbook-entry.md",
    "reference/checking-against-the-live-system.md",
    "reference/keeping-runbooks-current.md",
    "reference/writing-operator-steps.md",
    "templates/runbook-entry.template.md",
    "templates/runbook-index-and-review.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=runbook-writing"
  },
  {
   "id": "build-verification-checks",
   "title": "Build Verification Checks",
   "category": "Studio / Shipping",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Catch a dead on arrival build in the studio instead of in front of a user, with one fixed pre-ship list for start, main flows, version stamp, and artifacts, and a written record for every build.",
   "fileCount": 9,
   "totalBytes": 40849,
   "bundleHash": "e0332003a75ea4585914e4c5b80705a55103401bfe2bf16c486d20079798d8c8",
   "files": [
    "SKILL.md",
    "examples/mobile-app-blank-screen-catch/WALKTHROUGH.md",
    "examples/service-release-clean-check/WALKTHROUGH.md",
    "reference/recording-a-build-result.md",
    "reference/the-verification-checklist.md",
    "reference/version-and-artifact-checks.md",
    "reference/when-a-check-fails.md",
    "templates/build-verification-record.template.md",
    "templates/verification-checklist.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=build-verification-checks"
  },
  {
   "id": "research-source-grading",
   "title": "Research Source Grading",
   "category": "Data, Files, and Research",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Grade every source behind your research before its claims are used, so each claim carries only the weight its source earned, with copies counted once and conflicts named in the open.",
   "fileCount": 9,
   "totalBytes": 46775,
   "bundleHash": "594836028ac41f2368c27f9f6d73355dabe4a480e730d2aa07f26eceaa1aa22b",
   "files": [
    "SKILL.md",
    "examples/grading-a-vendor-performance-claim/WALKTHROUGH.md",
    "examples/grading-sources-for-a-pricing-brief/WALKTHROUGH.md",
    "reference/conflicts-and-grade-changes.md",
    "reference/dates-publishers-and-provenance.md",
    "reference/primary-and-secondary-sources.md",
    "reference/the-grading-scale.md",
    "templates/source-grade-card.template.md",
    "templates/source-register.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=research-source-grading"
  },
  {
   "id": "file-metadata-cleanup",
   "title": "File Metadata Cleanup",
   "category": "Data, Files, and Research",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A library you can find things in again: names, dates, and embedded fields agree under one written rule, with every change logged per file and originals kept untouched until you sign off.",
   "fileCount": 9,
   "totalBytes": 50847,
   "bundleHash": "fcc26ba71f03302d8cf65424a8b10bd81b2d0097a8469a721c2de38b794d6379",
   "files": [
    "SKILL.md",
    "examples/client-document-archive/WALKTHROUGH.md",
    "examples/spring-photo-export/WALKTHROUGH.md",
    "reference/approval-originals-and-verification.md",
    "reference/batch-checking-and-holds.md",
    "reference/metadata-fields-and-sources.md",
    "reference/writing-the-cleanup-rule.md",
    "templates/cleanup-plan.template.md",
    "templates/per-file-change-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=file-metadata-cleanup"
  },
  {
   "id": "first-conversation-scripts",
   "title": "First Conversation Scripts",
   "category": "Local Services / Sales",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Your first call with a new lead runs from a one-page script built from your own services, so the job gets sized, only deliverable promises get made, and the call ends with one next step both sides heard the same way.",
   "fileCount": 9,
   "totalBytes": 34361,
   "bundleHash": "ea7805d70840cf6043d9d5c28fd93ac6bea2011eb0e562369ec6d2b7e7de1532",
   "files": [
    "SKILL.md",
    "examples/fence-repair-first-call/WALKTHROUGH.md",
    "examples/junk-haul-first-call/WALKTHROUGH.md",
    "reference/building-the-script-from-your-services.md",
    "reference/questions-that-size-the-job.md",
    "reference/the-one-next-step.md",
    "reference/what-can-and-cannot-be-promised.md",
    "templates/conversation-record.template.md",
    "templates/first-conversation-script.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=first-conversation-scripts"
  },
  {
   "id": "add-on-offers",
   "title": "Add-On Offers",
   "category": "Local Services / Sales",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Finds extra work a job record genuinely supports, writes each add-on into the quote as its own line at its price from the operator price list, offers it once in plain words, and records the customer answer either way.",
   "fileCount": 9,
   "totalBytes": 35064,
   "bundleHash": "3d0cd3a99ffe58309f65cc24b0f8fa211d5df24f04ba429a27a623c8c914f144",
   "files": [
    "SKILL.md",
    "examples/deck-repair-stain-and-seal/WALKTHROUGH.md",
    "examples/kitchen-repair-grout-and-caulk/WALKTHROUGH.md",
    "reference/offering-once-and-recording-the-answer.md",
    "reference/price-list-and-what-is-never-offered.md",
    "reference/when-the-record-supports-an-add-on.md",
    "reference/writing-the-add-on-as-its-own-line.md",
    "templates/add-on-offer-record.template.md",
    "templates/quote-with-add-ons.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=add-on-offers"
  },
  {
   "id": "progress-payment-schedule",
   "title": "Progress Payment Schedule",
   "category": "Local Services / Money",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A bigger job billed in stages agreed before work starts, with a deposit, midpoints tied to visible milestones, and the balance at completion, each stage recorded as open or paid so money and work stay in step.",
   "fileCount": 9,
   "totalBytes": 37380,
   "bundleHash": "a68665ea8060c0eb979f54e346b68731618dad14d9be28ac792229740f15284d",
   "files": [
    "SKILL.md",
    "examples/kitchen-remodel-three-stages/WALKTHROUGH.md",
    "examples/roof-replacement-milestone-slip/WALKTHROUGH.md",
    "reference/changes-and-balance-at-completion.md",
    "reference/customer-wording-for-stages.md",
    "reference/stage-plan-tied-to-visible-milestones.md",
    "reference/stage-record-open-or-paid.md",
    "templates/progress-payment-schedule.template.md",
    "templates/stage-payment-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=progress-payment-schedule"
  },
  {
   "id": "fuel-and-mileage-log",
   "title": "Fuel and Mileage Log",
   "category": "Local Services / Money",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every trip your work vehicle makes is logged against the job it served and every fuel stop is recorded from its receipt, so each closed job shows its true road cost and the year's vehicle totals exist as arithmetic, not recollection.",
   "fileCount": 9,
   "totalBytes": 34516,
   "bundleHash": "7d7b3d60f65d3803c4b5174d0f07802d1c324a016f0904fc37325ef594e67ad2",
   "files": [
    "SKILL.md",
    "examples/fence-repair-two-jobs-one-van/WALKTHROUGH.md",
    "examples/firewood-delivery-week/WALKTHROUGH.md",
    "reference/closing-the-month-and-the-year.md",
    "reference/logging-a-trip-against-a-job.md",
    "reference/recording-a-fuel-stop.md",
    "reference/turning-the-log-into-a-job-cost.md",
    "templates/job-and-year-totals.template.md",
    "templates/trip-and-fuel-entry.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=fuel-and-mileage-log"
  },
  {
   "id": "site-safety-walk",
   "title": "Site Safety Walk",
   "category": "Local Services / Field Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "The crew starts knowing the site instead of discovering it, because one recorded walk before work names hazards across access, overhead, ground, and weather exposure, gives each a written plan, and files the photos against the job.",
   "fileCount": 9,
   "totalBytes": 39717,
   "bundleHash": "e45376abb6547f26df571f498b79a62fdecd1aa1611562b3e9c52ff78a5ff2ba",
   "files": [
    "SKILL.md",
    "examples/brush-clearing-deck-teardown/WALKTHROUGH.md",
    "examples/roof-valley-repair-steep-lot/WALKTHROUGH.md",
    "reference/access-and-overhead-hazards.md",
    "reference/ground-and-weather-hazards.md",
    "reference/photos-filed-against-the-job.md",
    "reference/plan-for-each-hazard.md",
    "templates/crew-start-brief.template.md",
    "templates/safety-walk-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=site-safety-walk"
  },
  {
   "id": "subcontractor-payment-records",
   "title": "Subcontractor Payment Records",
   "category": "Local Services / Field Operations",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every subcontractor payment tied to the agreed stage it covers, partials shown as partial, and the balance owed known from one record at any point.",
   "fileCount": 9,
   "totalBytes": 36007,
   "bundleHash": "d2a4535932a8ceee11e7d076e0053838b45cd35524f9d7593da8b036a316ab2b",
   "files": [
    "SKILL.md",
    "examples/deck-framing-staged-payments/WALKTHROUGH.md",
    "examples/fence-build-agreed-extra/WALKTHROUGH.md",
    "reference/agreement-total-and-stages.md",
    "reference/extras-holdbacks-and-closing-the-record.md",
    "reference/partial-payments-and-balance-owed.md",
    "reference/recording-a-payment-as-it-happens.md",
    "templates/payment-ledger.template.md",
    "templates/payment-summary-for-the-sub.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=subcontractor-payment-records"
  },
  {
   "id": "agent-decision-log",
   "title": "Agent Decision Log",
   "category": "Agent Operations",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Settle any questioned agent decision from one entry instead of from memory, and catch a repeating fault in the log before it becomes damage: every consequential call is recorded at the time with what the agent was given, the rule or record it followed, and what came of it.",
   "fileCount": 9,
   "totalBytes": 48263,
   "bundleHash": "c5e51c8cf103d4b15a541944280e138cacfea266105c79dafde1b0bf623330c8",
   "files": [
    "SKILL.md",
    "examples/a-pattern-review-that-changed-an-ordering-rule/WALKTHROUGH.md",
    "examples/a-refund-call-traced-three-weeks-later/WALKTHROUGH.md",
    "reference/decision-entry-fields.md",
    "reference/keeping-and-correcting-the-log.md",
    "reference/reading-the-log-for-patterns.md",
    "reference/what-counts-as-consequential.md",
    "templates/decision-log-entry.template.md",
    "templates/decision-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-decision-log"
  },
  {
   "id": "agent-capacity-planning",
   "title": "Agent Capacity Planning",
   "category": "Agent Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Know how much more work your fleet can take, agent by agent, from one record of load, queue growth, and the load where quality starts dropping, before a peak or a growing backlog forces the answer.",
   "fileCount": 9,
   "totalBytes": 48345,
   "bundleHash": "55781fd1f17e8731339d3c8c20d2eb00ae2db812dfe1bfef073ff0967ff09117",
   "files": [
    "SKILL.md",
    "examples/four-agent-fleet-before-the-holiday-peak/WALKTHROUGH.md",
    "examples/weekly-check-that-caught-a-growing-queue/WALKTHROUGH.md",
    "reference/capacity-terms-and-counts.md",
    "reference/finding-where-quality-drops.md",
    "reference/queue-growth-and-backlog.md",
    "reference/reading-per-agent-load.md",
    "templates/agent-load-entry.template.md",
    "templates/capacity-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-capacity-planning"
  },
  {
   "id": "secret-rotation-schedule",
   "title": "Secret Rotation Schedule",
   "category": "Agent Safety and Governance",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every secret on one written rotation schedule, by label and location only: its age, its owner, and its next rotation date, with the reminder drafted ahead of the date and each rotation logged, so no secret ages in silence.",
   "fileCount": 9,
   "totalBytes": 41979,
   "bundleHash": "4480723cf40be81e81cc48f68fa1cfffb5ff0718b5639cd8b905c919126488a8",
   "files": [
    "SKILL.md",
    "examples/catching-up-an-overdue-schedule/WALKTHROUGH.md",
    "examples/first-schedule-for-a-solo-studio/WALKTHROUGH.md",
    "reference/choosing-rotation-intervals.md",
    "reference/logging-a-rotation.md",
    "reference/reminders-and-the-rotation-day.md",
    "reference/schedule-fields.md",
    "templates/rotation-log-entry.template.md",
    "templates/secret-rotation-schedule.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=secret-rotation-schedule"
  },
  {
   "id": "page-accessibility-checks",
   "title": "Page Accessibility Checks",
   "category": "Studio / Publishing",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Get every published page checked against one fixed accessibility list, with findings logged per page and fixes drafted for your approval, so weak alt text, broken heading order, vague link names, and failing contrast are found and settled from values instead of guessed at by eye.",
   "fileCount": 9,
   "totalBytes": 45802,
   "bundleHash": "131d4a167b360e14964711eb60aa3913e1e8db07abcc314c1d0ea4df52d74f3c",
   "files": [
    "SKILL.md",
    "examples/event-listing-and-guide-pages-for-a-community-site/WALKTHROUGH.md",
    "examples/home-and-services-pages-for-a-small-studio/WALKTHROUGH.md",
    "reference/alt-text-and-image-honesty.md",
    "reference/contrast-from-design-values.md",
    "reference/headings-and-link-names.md",
    "reference/the-fixed-check-list.md",
    "templates/fix-draft-sheet.template.md",
    "templates/page-check-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=page-accessibility-checks"
  },
  {
   "id": "dependency-license-ledger",
   "title": "Dependency License Ledger",
   "category": "Studio / Shipping",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Ship every release knowing, from one ledger rechecked against the build, what each dependency carries and what its license asks, so no obligation goes out unrecorded.",
   "fileCount": 9,
   "totalBytes": 42587,
   "bundleHash": "5336fc2d18b883dbf25ae6762fd5dda7317732823fa1da0c472aa655ef7b4a08",
   "files": [
    "SKILL.md",
    "examples/first-ledger-for-a-shipping-app/WALKTHROUGH.md",
    "examples/release-recheck-that-caught-a-license-change/WALKTHROUGH.md",
    "reference/keeping-the-ledger-current.md",
    "reference/ledger-fields.md",
    "reference/reading-a-license-for-the-ledger.md",
    "reference/what-each-license-asks.md",
    "templates/dependency-license-entry.template.md",
    "templates/license-ledger.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=dependency-license-ledger"
  },
  {
   "id": "archive-search-index",
   "title": "Archive Search Index",
   "category": "Data, Files, and Research",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Find any archived file by what it is, with a searchable index built from each file's subject, date, parties, and type and kept current as new files arrive.",
   "fileCount": 9,
   "totalBytes": 44660,
   "bundleHash": "d401f5994c7e441b76be340c2659be43989db607406e72d215780f21e527f3ce",
   "files": [
    "SKILL.md",
    "examples/first-index-for-a-contracts-archive/WALKTHROUGH.md",
    "examples/keeping-a-job-archive-searchable/WALKTHROUGH.md",
    "reference/index-fields.md",
    "reference/keeping-the-index-current.md",
    "reference/reading-fields-from-the-record.md",
    "reference/searching-and-checking-the-index.md",
    "templates/archive-index.template.md",
    "templates/index-entry.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=archive-search-index"
  },
  {
   "id": "seasonal-booking-calendar",
   "title": "Seasonal Booking Calendar",
   "category": "Local Services / Sales",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Your seasonal rushes get planned in the quiet months: last year's own job records become a season map with an opening date and an honest slot count per season, plus an ordered waitlist kept for every season that fills.",
   "fileCount": 9,
   "totalBytes": 36858,
   "bundleHash": "6acb317e26989dfe5a6428a9cf93a911b2f90d69a4ad455aec017e3b64acda12",
   "files": [
    "SKILL.md",
    "examples/exterior-washing-gutters-lights/WALKTHROUGH.md",
    "examples/leaf-and-yard-spring-fall/WALKTHROUGH.md",
    "reference/mapping-demand-to-seasons.md",
    "reference/opening-dates-and-capacity.md",
    "reference/reading-past-job-records.md",
    "reference/waitlists-that-hold.md",
    "templates/seasonal-calendar.template.md",
    "templates/waitlist-sheet.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=seasonal-booking-calendar"
  },
  {
   "id": "materials-price-watch",
   "title": "Materials Price Watch",
   "category": "Local Services / Money",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Your estimates stop quoting last season's prices: the materials you buy most are rechecked on a schedule from real listings at the exact quantity, every check dated and sourced, changes logged, and anything that cannot be sourced carried as a flagged placeholder, never a made-up figure.",
   "fileCount": 9,
   "totalBytes": 35014,
   "bundleHash": "45041066fa7f6a94deb7b431f13dd300961fb4ea048b41abc8bb2293fe6fda02",
   "files": [
    "SKILL.md",
    "examples/fence-and-deck-may-check/WALKTHROUGH.md",
    "examples/roofing-and-lumber-march-check/WALKTHROUGH.md",
    "reference/building-the-watch-list.md",
    "reference/checking-prices-by-exact-quantity.md",
    "reference/marking-figures-for-estimates.md",
    "reference/reading-changes-and-flagging-gaps.md",
    "templates/estimate-price-note.template.md",
    "templates/price-watch-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=materials-price-watch"
  },
  {
   "id": "crew-timesheet-records",
   "title": "Crew Timesheet Records",
   "category": "Local Services / Field Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Pay and true job labor cost come off one sheet instead of memory: every crew member's hours are entered per job on the same day, with totals per job and per week worked in the open.",
   "fileCount": 9,
   "totalBytes": 39190,
   "bundleHash": "cbf0822e8877bef3d954ae5ca050982f89bc22e991491bb95c0faf723ba4fc9a",
   "files": [
    "SKILL.md",
    "examples/three-person-crew-one-job-week/WALKTHROUGH.md",
    "examples/two-jobs-split-week-corrections/WALKTHROUGH.md",
    "reference/corrections-gaps-and-missing-days.md",
    "reference/entering-hours-the-same-day.md",
    "reference/rates-pay-and-job-cost.md",
    "reference/totals-per-job-and-per-week.md",
    "templates/job-hours-summary.template.md",
    "templates/weekly-timesheet.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=crew-timesheet-records"
  },
  {
   "id": "vehicle-and-trailer-checks",
   "title": "Vehicle and Trailer Checks",
   "category": "Local Services / Field Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every work trip starts from a signed record instead of a shrug: one standard check of lights, tires, hitch and coupler, and load secured, logged per trip against the job, so a roadside failure or a load question has a record behind it.",
   "fileCount": 9,
   "totalBytes": 35479,
   "bundleHash": "74d2fd5195cf45a6d8ac28f60b80928998d718d089cbe7328827d3083eb97234",
   "files": [
    "SKILL.md",
    "examples/clean-check-haul-to-job/WALKTHROUGH.md",
    "examples/failed-light-held-at-yard/WALKTHROUGH.md",
    "reference/hitch-coupler-and-safety-chains.md",
    "reference/lights-tires-and-running-gear.md",
    "reference/load-secured-and-ready-to-roll.md",
    "reference/when-a-check-fails.md",
    "templates/check-log.template.md",
    "templates/trip-check-sheet.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=vehicle-and-trailer-checks"
  },
  {
   "id": "data-entry-verification",
   "title": "Data Entry Verification",
   "category": "Data, Files, and Research",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Hand-typed records earn trust before later work stands on them: every field gets a second pass against its source, mismatches are listed by field, corrections come from the source only, and anything that cannot be read is flagged, never guessed.",
   "fileCount": 9,
   "totalBytes": 31228,
   "bundleHash": "22f34dd538bfeb46ddb61386a646542d4fa9fd9f924ddbcab958c6f89d99e2fb",
   "files": [
    "SKILL.md",
    "examples/forty-eight-delivery-notes-stock-sheet/WALKTHROUGH.md",
    "examples/one-hundred-twenty-signup-cards-contact-list/WALKTHROUGH.md",
    "reference/comparing-field-by-field.md",
    "reference/flagging-unreadable-fields.md",
    "reference/mismatch-log-and-corrections.md",
    "reference/source-is-the-authority.md",
    "templates/mismatch-log.template.md",
    "templates/verification-sheet.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=data-entry-verification"
  },
  {
   "id": "contact-list-hygiene",
   "title": "Contact List Hygiene",
   "category": "Data, Files, and Research",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "One name means one entry: duplicates are merged with every merge on record, stale entries and conflicting details are flagged for your call with both values kept, and nothing is deleted in silence.",
   "fileCount": 9,
   "totalBytes": 40711,
   "bundleHash": "e4f711398257e52c239bf843bb0eed5f5e026ed153d34870142adba2e1bbe054",
   "files": [
    "SKILL.md",
    "examples/small-contractor-list-cleanup/WALKTHROUGH.md",
    "examples/supplier-and-customer-list-cleanup/WALKTHROUGH.md",
    "reference/building-the-canonical-entry.md",
    "reference/finding-duplicates-without-guessing.md",
    "reference/merging-and-the-merge-record.md",
    "reference/stale-entries-and-conflict-flags.md",
    "templates/hygiene-report.template.md",
    "templates/merge-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=contact-list-hygiene"
  },
  {
   "id": "incident-postmortem-writing",
   "title": "Incident Postmortem Writing",
   "category": "Studio / Publishing",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A closed incident gets one true account instead of two memories: the timeline built from the record and the logs as they actually ran, what held and what failed in plain words, and every fix carried out with an owner, a date, and the check that will show it landed.",
   "fileCount": 9,
   "totalBytes": 56382,
   "bundleHash": "1be041173f0886484352e34cc62789d52391d13e6452468531965133de4727ca",
   "files": [
    "SKILL.md",
    "examples/checkout-timeout-postmortem.md",
    "examples/upload-limit-postmortem.md",
    "reference/building-the-timeline.md",
    "reference/fixes-with-owners-and-dates.md",
    "reference/sources-gaps-and-plain-words.md",
    "reference/what-held-and-what-failed.md",
    "templates/fix-list.template.md",
    "templates/postmortem.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=incident-postmortem-writing"
  },
  {
   "id": "agent-workload-balancing",
   "title": "Agent Workload Balancing",
   "category": "Agent Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Work stops piling onto one agent while another sits idle: the overloaded and the underused are read from the capacity record, each move is proposed with its reason and approved before it happens, and the result is checked against what the move promised.",
   "fileCount": 9,
   "totalBytes": 43603,
   "bundleHash": "e1ccd049fa31c6400515c7354828efd6a329aa5e01f73154e123bb079886f513",
   "files": [
    "SKILL.md",
    "examples/overloaded-lookup-agent-relieved-by-two-moves/WALKTHROUGH.md",
    "examples/peak-week-rebalance-that-held-quality/WALKTHROUGH.md",
    "reference/balance-terms-and-counts.md",
    "reference/checking-a-move-after-it-happens.md",
    "reference/proposing-and-approving-a-move.md",
    "reference/reading-the-capacity-record-for-moves.md",
    "templates/balance-plan.template.md",
    "templates/move-proposal.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-workload-balancing"
  },
  {
   "id": "third-party-skill-watch",
   "title": "Third-Party Skill Watch",
   "category": "Agent Safety and Governance",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A third-party skill your fleet depends on never changes under you unnoticed: every package sits in a pinned register, checked against its source on a schedule, and each update is reviewed file by file against the pinned copy before anyone adopts it.",
   "fileCount": 9,
   "totalBytes": 51388,
   "bundleHash": "53aac98f58ca6d1e638748ea195de2846348e71ea15d01309b60ec65125e945a",
   "files": [
    "SKILL.md",
    "examples/a-small-patch-reviewed-and-adopted.md",
    "examples/an-update-held-for-a-wider-reach.md",
    "reference/holds-deferrals-and-retiring.md",
    "reference/reviewing-an-update-before-adoption.md",
    "reference/the-dependency-register.md",
    "reference/watch-cadence-and-sources.md",
    "templates/dependency-register.template.md",
    "templates/update-review.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=third-party-skill-watch"
  },
  {
   "id": "release-candidate-freeze",
   "title": "Release Candidate Freeze",
   "category": "Studio / Shipping",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "The build that ships is the build that was checked: one named candidate is frozen with what is in and what is held out both written down, and a late change gets in only through a written exception the operator approves.",
   "fileCount": 9,
   "totalBytes": 50504,
   "bundleHash": "11297c65d88ee23eb3290d302bbe069a1ced3a1d23b451c40cf51038170b16d8",
   "files": [
    "SKILL.md",
    "examples/freeze-with-one-admitted-and-one-held-out.md",
    "examples/freeze-with-one-approved-late-fix.md",
    "reference/closing-and-lifting-the-freeze.md",
    "reference/freeze-record-fields.md",
    "reference/the-exception-route.md",
    "reference/what-counts-as-in-or-held-out.md",
    "templates/freeze-record.template.md",
    "templates/late-change-exception.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=release-candidate-freeze"
  },
  {
   "id": "visual-evidence-records",
   "title": "Visual Evidence Records",
   "category": "Data, Files, and Research",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A screenshot kept as evidence still means something a month later: every capture is logged at the time with what it shows, when it was taken, and which build or record it belongs to, and filed against the record it supports.",
   "fileCount": 9,
   "totalBytes": 49530,
   "bundleHash": "e06b4ea2893bb236207bc3bf246bf8f15c7fe0a95b36081b20722dcb8b936862",
   "files": [
    "SKILL.md",
    "examples/bug-report-checkout-failure/WALKTHROUGH.md",
    "examples/job-record-delivery-dispute/WALKTHROUGH.md",
    "reference/capture-log-fields.md",
    "reference/checking-and-correcting-records.md",
    "reference/naming-and-filing-captures.md",
    "reference/what-makes-a-capture-trustworthy.md",
    "templates/capture-log-entry.template.md",
    "templates/evidence-index.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=visual-evidence-records"
  },
  {
   "id": "bulk-file-conversion",
   "title": "Bulk File Conversion",
   "category": "Data, Files, and Research",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A pile of files changes format without losing any in silence: the batch runs under a written plan the operator approved, every failure is listed by name, the counts in and out are reconciled, and the originals stay untouched until the batch is signed off.",
   "fileCount": 9,
   "totalBytes": 47668,
   "bundleHash": "bf36b5f5c12b4c3dc3a701e9502eb7063f5a71e242336b7fcf3e7f828c55fa6e",
   "files": [
    "SKILL.md",
    "examples/course-handouts-doc-to-pdf/WALKTHROUGH.md",
    "examples/supplier-invoices-pdf-to-sheet/WALKTHROUGH.md",
    "reference/failures-spot-checks-and-reconciliation.md",
    "reference/formats-and-what-conversion-can-lose.md",
    "reference/originals-approval-and-handover.md",
    "reference/writing-the-conversion-plan.md",
    "templates/batch-record.template.md",
    "templates/conversion-plan.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=bulk-file-conversion"
  },
  {
   "id": "quote-expiry-and-renewal",
   "title": "Quote Expiry and Renewal",
   "category": "Local Services / Sales",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A lapsed quote never quietly comes back at a stale price: every quote carries an honest expiry date, and when one lapses the renewal is rebuilt line by line from your current price record and held for your approval, with the new figure and the change shown in the open.",
   "fileCount": 9,
   "totalBytes": 35554,
   "bundleHash": "ca58f79adbede32a8d934a62973fec9376ca03dc5c967e6489d333bf32466949",
   "files": [
    "SKILL.md",
    "examples/fence-repair-renewal-after-a-rise/WALKTHROUGH.md",
    "examples/porch-step-renewal-that-closed/WALKTHROUGH.md",
    "reference/closing-and-recording-expired-quotes.md",
    "reference/rebuilding-the-renewal-from-current-prices.md",
    "reference/setting-an-honest-expiry-date.md",
    "reference/writing-the-renewal-note.md",
    "templates/quote-expiry-log.template.md",
    "templates/renewed-quote.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=quote-expiry-and-renewal"
  },
  {
   "id": "job-cancellation-handling",
   "title": "Job Cancellation Handling",
   "category": "Local Services / Sales",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A cancelled job ends as a finished record instead of a standing dispute: the deposit is settled exactly as the written terms say, every materials line is accounted for, the refund is worked in the open, and the customer gets a plain way back.",
   "fileCount": 9,
   "totalBytes": 33938,
   "bundleHash": "b5b40bc6966cf3273780c7ea351d0393a44256dc7f42e9d29462ffbe234aba1b",
   "files": [
    "SKILL.md",
    "examples/fence-build-cancelled-after-materials/WALKTHROUGH.md",
    "examples/roof-valley-repair-cancelled-early/WALKTHROUGH.md",
    "reference/accounting-for-materials-bought.md",
    "reference/reading-the-written-terms.md",
    "reference/releasing-the-slot-and-offering-rebook.md",
    "reference/working-the-settlement-figures.md",
    "templates/cancellation-close-out-record.template.md",
    "templates/cancellation-note-to-customer.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=job-cancellation-handling"
  },
  {
   "id": "year-end-money-packet",
   "title": "Year-End Money Packet",
   "category": "Local Services / Money",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Year-end stops being a rebuild from scraps: the year's income by source, expenses by class, and vehicle totals are assembled into one packet with every total worked in the open and every gap named as a gap, ready to hand to your accountant.",
   "fileCount": 9,
   "totalBytes": 42155,
   "bundleHash": "b67eee30a76cba060a5981085d2f87883521feec095db031389451ec9722bc57",
   "files": [
    "SKILL.md",
    "examples/firewood-and-hauling-mixed-records-packet.md",
    "examples/solo-yard-operator-full-year-packet.md",
    "reference/gathering-the-year-records.md",
    "reference/income-by-source-and-expenses-by-class.md",
    "reference/naming-gaps-and-staying-inside-the-records.md",
    "reference/vehicle-totals-from-the-log.md",
    "templates/gap-and-handover-note.template.md",
    "templates/year-end-packet.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=year-end-money-packet"
  },
  {
   "id": "dump-and-disposal-runs",
   "title": "Dump and Disposal Runs",
   "category": "Local Services / Field Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Disposal stops being the cost that lands nowhere: every run is planned from the job records, the fee is taken from the site receipt, and each job's share is filed on its own record so the job lines add back to the receipt total.",
   "fileCount": 9,
   "totalBytes": 34376,
   "bundleHash": "ee1fe0a9b7e2ce238ed691edbabd6fa46731abefe099652f698af3b8bbc2be78",
   "files": [
    "SKILL.md",
    "examples/shared-run-three-jobs/WALKTHROUGH.md",
    "examples/single-job-roof-tear-off/WALKTHROUGH.md",
    "reference/filing-the-run-against-the-jobs.md",
    "reference/planning-the-run-from-the-jobs.md",
    "reference/recording-the-receipt-and-the-fee.md",
    "reference/splitting-a-shared-run-across-jobs.md",
    "templates/job-disposal-line.template.md",
    "templates/run-plan-and-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=dump-and-disposal-runs"
  },
  {
   "id": "warranty-claims-packet",
   "title": "Warranty Claims Packet",
   "category": "Local Services / Money",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A warranty claim starts from the paper, not from memory: proof of purchase, the warranty window checked in the open, dated photos of the failure as found, and the claim drafted in the maker's own terms, tracked until it closes.",
   "fileCount": 9,
   "totalBytes": 41063,
   "bundleHash": "ec522ee9233ab683e7534001644eb08eb508b76935597e0b7c401b5e8685caaf",
   "files": [
    "SKILL.md",
    "examples/circular-saw-motor-failure-claim.md",
    "examples/deck-board-peeling-claim.md",
    "reference/drafting-in-the-makers-terms.md",
    "reference/photos-of-the-failure.md",
    "reference/proof-of-purchase-and-dates.md",
    "reference/tracking-the-claim-to-close.md",
    "templates/claim-packet.template.md",
    "templates/claim-tracking-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=warranty-claims-packet"
  },
  {
   "id": "form-letter-library",
   "title": "Form Letter Library",
   "category": "Data, Files, and Research",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "The letters you send again and again stop drifting: each one lives as a checked template that names its purpose and the facts it requires, filled from the record at send time, so no letter goes out carrying a claim you cannot back that day.",
   "fileCount": 9,
   "totalBytes": 29173,
   "bundleHash": "804b8bb9d943243166a2ae44ed432b38a84fa05a0edbf695dcf049a6e754ed6a",
   "files": [
    "SKILL.md",
    "examples/estimate-follow-up-and-balance-note/WALKTHROUGH.md",
    "examples/schedule-change-and-completion-letters/WALKTHROUGH.md",
    "reference/checking-claims-before-sending.md",
    "reference/filling-facts-from-the-record.md",
    "reference/listing-required-facts.md",
    "reference/naming-each-letters-purpose.md",
    "templates/form-letter-entry.template.md",
    "templates/letter-draft-from-template.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=form-letter-library"
  },
  {
   "id": "agent-handover-briefs",
   "title": "Agent Handover Briefs",
   "category": "Agent Operations",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every change of run or operator starts from a written brief instead of a cold start: the state as checked, the work done, the decisions made, the open items with a holder and a next step, and what to watch, so nothing has to be re-derived or guessed.",
   "fileCount": 9,
   "totalBytes": 52009,
   "bundleHash": "e0131c759f9480a3de32f7af7aa4eddcff4a0bef98f1e4bee127da4123df35a6",
   "files": [
    "SKILL.md",
    "examples/a-weekend-cover-brief-for-a-repair-shop-inbox/WALKTHROUGH.md",
    "examples/an-overnight-run-handed-to-the-morning-operator/WALKTHROUGH.md",
    "reference/brief-fields.md",
    "reference/keeping-and-correcting-briefs.md",
    "reference/reading-a-brief-on-arrival.md",
    "reference/when-to-write-a-brief.md",
    "templates/handover-brief.template.md",
    "templates/handover-index.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-handover-briefs"
  },
  {
   "id": "approval-queue-management",
   "title": "Approval Queue Management",
   "category": "Agent Safety and Governance",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Nothing sensitive sits undecided in silence: every pending approval is kept on one record with its age and its owner, and each item ends decided, escalated, or expired on a rule you set, with the queue swept on a schedule.",
   "fileCount": 9,
   "totalBytes": 42193,
   "bundleHash": "6187fec23b30ebfb0c672aaa385bdaf8dd719494d72e30f1e98bda46d845de02",
   "files": [
    "SKILL.md",
    "examples/a-weekly-sweep-that-cleared-a-backlog/WALKTHROUGH.md",
    "examples/an-item-that-expired-on-its-rule/WALKTHROUGH.md",
    "reference/aging-and-expiry-rules.md",
    "reference/escalation-routes.md",
    "reference/queue-item-fields.md",
    "reference/reviewing-and-clearing-the-queue.md",
    "templates/approval-queue.template.md",
    "templates/queue-item.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=approval-queue-management"
  },
  {
   "id": "audit-trail-exports",
   "title": "Audit Trail Exports",
   "category": "Agent Safety and Governance",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A reviewer who cannot see your live system still gets the full story: your decision and proof trails exported into one dated packet, checked entry by entry before it is shared, with every gap named instead of smoothed over.",
   "fileCount": 9,
   "totalBytes": 51521,
   "bundleHash": "973190cb7b21b4d1d26f144eeca30196fe55f0f1b9a12527a869eab9e7677542",
   "files": [
    "SKILL.md",
    "examples/a-handover-packet-when-the-live-system-was-gone/WALKTHROUGH.md",
    "examples/exporting-a-month-of-approvals-for-an-outside-review/WALKTHROUGH.md",
    "reference/dating-freezing-and-keeping-exports.md",
    "reference/naming-gaps-and-missing-proof.md",
    "reference/packet-contents-and-order.md",
    "reference/proof-checks-before-you-share.md",
    "templates/export-packet.template.md",
    "templates/export-request-and-receipt.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=audit-trail-exports"
  },
  {
   "id": "release-checklist-runner",
   "title": "Release Checklist Runner",
   "category": "Studio / Shipping",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A release stops depending on memory: it runs step by step against its written checklist, each step evidenced and signed off in order, holds named in the open, and one run record kept per release.",
   "fileCount": 9,
   "totalBytes": 39995,
   "bundleHash": "c673ad41712d45664b07ba1e9caf6977af4434516f147fdbec76cb2547503e7e",
   "files": [
    "SKILL.md",
    "examples/a-release-held-at-the-announce-step/WALKTHROUGH.md",
    "examples/a-small-app-release-run-in-order/WALKTHROUGH.md",
    "reference/checklist-shape-and-step-evidence.md",
    "reference/closing-and-keeping-the-run-record.md",
    "reference/holds-skips-and-failed-steps.md",
    "reference/running-steps-in-order.md",
    "templates/release-checklist.template.md",
    "templates/release-run-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=release-checklist-runner"
  },
  {
   "id": "document-version-control",
   "title": "Document Version Control",
   "category": "Data, Files, and Research",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Nobody works from the wrong copy again: every living document has one current version named in a register, superseded copies marked and archived, and one change log line for every version.",
   "fileCount": 9,
   "totalBytes": 45112,
   "bundleHash": "f4eb7d3a00e878c7b7b3d1cd3b9a7968f7c9c94a0d3442c0285edcc201f7c755",
   "files": [
    "SKILL.md",
    "examples/client-intake-pack-brought-under-control/WALKTHROUGH.md",
    "examples/price-list-corrected-without-losing-history/WALKTHROUGH.md",
    "reference/choosing-what-needs-control.md",
    "reference/marking-and-archiving-superseded-copies.md",
    "reference/version-names-and-numbers.md",
    "reference/writing-the-change-log.md",
    "templates/change-log-entry.template.md",
    "templates/version-register.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=document-version-control"
  },
  {
   "id": "meeting-agenda-builder",
   "title": "Meeting Agenda Builder",
   "category": "Agent Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Meetings start from the record instead of from memory: the agenda is built before the meeting from the open items and decisions actually owed, each item with one owner and the decision or input it needs.",
   "fileCount": 9,
   "totalBytes": 39600,
   "bundleHash": "a946f0afca31ec61fafc962da81301c1f08bb0ead58cabdcbb8cdb37ee4d9c5d",
   "files": [
    "SKILL.md",
    "examples/launch-readiness-meeting-with-decisions-owed/WALKTHROUGH.md",
    "examples/weekly-ops-review-built-from-open-items/WALKTHROUGH.md",
    "reference/agenda-item-fields.md",
    "reference/gathering-open-items-from-the-record.md",
    "reference/timing-and-ordering-the-agenda.md",
    "reference/what-belongs-on-an-agenda.md",
    "templates/agenda-item.template.md",
    "templates/meeting-agenda.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=meeting-agenda-builder"
  },
  {
   "id": "inbox-zero-triage",
   "title": "Inbox Zero Triage",
   "category": "Data, Files, and Research",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "An inbox worked in full passes stops being a pile: every message lands in one of four buckets, act now, file, waiting, or discard, the closing counts add back to the start, and waiting items carry an owner and a follow-up date, so nothing important is quietly dropped.",
   "fileCount": 9,
   "totalBytes": 30392,
   "bundleHash": "b7dfd15416871c9bc2947a69cdb3c7ddc2ef7672e8b9d24d92114543936e3c1d",
   "files": [
    "SKILL.md",
    "examples/contractor-inbox-monday/WALKTHROUGH.md",
    "examples/freelance-desk-friday/WALKTHROUGH.md",
    "reference/defining-the-four-buckets.md",
    "reference/handling-waiting-and-follow-up.md",
    "reference/keeping-nothing-dropped.md",
    "reference/running-a-triage-pass.md",
    "templates/triage-pass-log.template.md",
    "templates/waiting-list.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=inbox-zero-triage"
  },
  {
   "id": "recurring-task-scheduler",
   "title": "Recurring Task Scheduler",
   "category": "Agent Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Recurring work stops failing quietly: every job sits on one schedule record with a named owner, a cadence with a due window, and proof of its last run, and any due job with no proof stands marked missed in plain sight.",
   "fileCount": 9,
   "totalBytes": 33560,
   "bundleHash": "f226a3d4f7482374f2173d8c66d758844cf32b9f00b7e6f7f714b9ead3a2a0f4",
   "files": [
    "SKILL.md",
    "examples/monthly-close-review/WALKTHROUGH.md",
    "examples/weekly-ops-checks-review/WALKTHROUGH.md",
    "reference/building-the-schedule-record.md",
    "reference/cadences-and-due-windows.md",
    "reference/last-run-proof-and-gaps.md",
    "reference/reviewing-missed-runs.md",
    "templates/run-proof-note.template.md",
    "templates/schedule-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=recurring-task-scheduler"
  },
  {
   "id": "price-list-maintenance",
   "title": "Price List Maintenance",
   "category": "Local Services / Money",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Your quotes stop resting on memory: your own sell prices for services sit on one written list reviewed on a set cadence, with every change dated and carrying its reason, so each new quote draws from the one current price.",
   "fileCount": 9,
   "totalBytes": 34105,
   "bundleHash": "edc593298c418373609217ae32b47cb25671e307cd2ab28f93634098b2164a33",
   "files": [
    "SKILL.md",
    "examples/midyear-update-hauling-and-repairs/WALKTHROUGH.md",
    "examples/quarterly-review-yard-care/WALKTHROUGH.md",
    "reference/building-the-price-list.md",
    "reference/recording-changes-with-reasons.md",
    "reference/setting-the-review-cadence.md",
    "reference/using-the-list-in-quotes.md",
    "templates/price-change-log.template.md",
    "templates/price-list.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=price-list-maintenance"
  },
  {
   "id": "customer-offboarding-pack",
   "title": "Customer Offboarding Pack",
   "category": "Local Services / Sales",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A customer relationship ends as a finished record instead of an open thread: the final account settled with the arithmetic shown, records handed over on a dated list, standing arrangements closed with end dates, and a plain closing note drafted for your approval.",
   "fileCount": 9,
   "totalBytes": 31759,
   "bundleHash": "b0f042e1f2dac3cc2a4127201dced2b86a46ab2c20de7fbe927b990fa138c45c",
   "files": [
    "SKILL.md",
    "examples/landscaping-season-close/WALKTHROUGH.md",
    "examples/regular-cleaning-close/WALKTHROUGH.md",
    "reference/closing-access-and-standing-arrangements.md",
    "reference/handing-over-records-and-deliverables.md",
    "reference/settling-the-final-account.md",
    "reference/writing-the-closing-note.md",
    "templates/closing-note.template.md",
    "templates/offboarding-checklist.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=customer-offboarding-pack"
  },
  {
   "id": "tax-document-gathering",
   "title": "Tax Document Gathering",
   "category": "Local Services / Money",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Year-end stops being a search: tax documents are filed into one indexed folder as they arrive all year, a monthly sweep names anything missing while it can still be found, and the handover to your accountant is the folder itself. It organizes documents only and gives no tax advice.",
   "fileCount": 9,
   "totalBytes": 46264,
   "bundleHash": "917ae9d0918fe2230589916481ca4d622f47695241d188136e8e38754f558c44",
   "files": [
    "SKILL.md",
    "examples/full-year-lawn-and-cleanout/WALKTHROUGH.md",
    "examples/midyear-shoebox-start/WALKTHROUGH.md",
    "reference/document-classes-and-labels.md",
    "reference/filing-on-arrival.md",
    "reference/folder-layout-and-the-index.md",
    "reference/monthly-sweep-and-missing-documents.md",
    "templates/document-index.template.md",
    "templates/handover-note.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=tax-document-gathering"
  },
  {
   "id": "social-proof-collector",
   "title": "Social Proof Collector",
   "category": "Creator and Audience",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Praise you already earned stops getting lost or misused: reviews, messages, and comments are gathered into one library with the permission state recorded on each item, so a testimonial goes public only when its record covers that use.",
   "fileCount": 9,
   "totalBytes": 34581,
   "bundleHash": "c93f4fdce327754c4680621d9e76687f1552460ef1e20df2d7cce44162cbdd07",
   "files": [
    "SKILL.md",
    "examples/creator-course-feedback/WALKTHROUGH.md",
    "examples/local-workshop-client-notes/WALKTHROUGH.md",
    "reference/checking-coverage-before-any-use.md",
    "reference/finding-praise-that-already-exists.md",
    "reference/keeping-the-library-honest-and-current.md",
    "reference/recording-permission-per-item.md",
    "templates/proof-library-entry.template.md",
    "templates/public-use-check.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=social-proof-collector"
  },
  {
   "id": "multi-step-job-planner",
   "title": "Multi-Step Job Planner",
   "category": "Agent Operations",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A large job stops failing one unnamed step at a time: the whole job is broken into ordered steps, each carrying what it needs before it can start, who owns it, and a written test for done, kept as one living plan the work is checked against as it runs.",
   "fileCount": 9,
   "totalBytes": 51172,
   "bundleHash": "d4880e28e207ddda24f6b41cee4686329848390022c9750ce9403d8fc2224ff4",
   "files": [
    "SKILL.md",
    "examples/help-article-portal-move-in-nine-steps/WALKTHROUGH.md",
    "examples/twelve-lesson-training-pack-built-to-a-plan/WALKTHROUGH.md",
    "reference/keeping-the-plan-current.md",
    "reference/ordering-steps-and-dependencies.md",
    "reference/plan-terms-and-parts.md",
    "reference/writing-done-criteria-that-hold.md",
    "templates/job-plan.template.md",
    "templates/step-entry.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=multi-step-job-planner"
  },
  {
   "id": "failure-mode-drills",
   "title": "Failure Mode Drills",
   "category": "Agent Safety and Governance",
   "priceUSD": 19,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Know what your system does in the first minute after a part fails, before a real failure shows you in front of a client: each failure is scripted in advance, run on copies or in a sandbox, and the observed behavior is recorded against the behavior written down before the run.",
   "fileCount": 9,
   "totalBytes": 52512,
   "bundleHash": "c6f58d60458e3025a144d6bdf341e8befd7affb8019863fffb7a440082f1a8ef",
   "files": [
    "SKILL.md",
    "examples/bad-input-batch-at-intake/WALKTHROUGH.md",
    "examples/provider-outage-mid-run/WALKTHROUGH.md",
    "reference/failure-modes-and-expected-behavior.md",
    "reference/reading-drill-results.md",
    "reference/running-on-copies-and-in-a-sandbox.md",
    "reference/scripting-a-drill.md",
    "templates/drill-record.template.md",
    "templates/drill-script.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=failure-mode-drills"
  },
  {
   "id": "access-review-cadence",
   "title": "Access Review Cadence",
   "category": "Agent Safety and Governance",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Access stops drifting one quiet grant at a time: every grant a person, an agent, or a connected tool holds sits in one standing register and is rechecked on its due date, then confirmed, narrowed, or revoked on the record, on a fixed rhythm instead of after something goes wrong.",
   "fileCount": 9,
   "totalBytes": 43016,
   "bundleHash": "521849d7e1d5f7e220ff8e822a372f8215dfdd98624f737cbbcc392dfb070f0f",
   "files": [
    "SKILL.md",
    "examples/monthly-cycle-for-a-small-support-team/WALKTHROUGH.md",
    "examples/quarterly-cycle-that-ended-stale-grants/WALKTHROUGH.md",
    "reference/cadence-terms-and-the-register.md",
    "reference/choosing-the-cadence.md",
    "reference/confirm-narrow-or-revoke.md",
    "reference/stale-grants-and-drift-signs.md",
    "templates/grant-review-entry.template.md",
    "templates/review-register.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=access-review-cadence"
  },
  {
   "id": "incident-severity-grading",
   "title": "Incident Severity Grading",
   "category": "Studio / Publishing",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every incoming incident is graded against one written severity scale, with the grade and its reasons on record and the response target following from the grade, so a fault that stops buyers paying stops sharing a queue with a spelling slip.",
   "fileCount": 9,
   "totalBytes": 37771,
   "bundleHash": "7272c2ecc26642425de8bad48ebc4ec0c59a2be50b7c3dd82395748cc53ff1a8",
   "files": [
    "SKILL.md",
    "examples/morning-when-the-store-went-down-and-a-typo-waited/WALKTHROUGH.md",
    "examples/slow-editor-and-the-loud-print-fault/WALKTHROUGH.md",
    "reference/grading-by-impact-and-reach.md",
    "reference/regrading-and-borderline-cases.md",
    "reference/response-targets-per-grade.md",
    "reference/the-severity-scale.md",
    "templates/grading-entry.template.md",
    "templates/severity-scale.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=incident-severity-grading"
  },
  {
   "id": "file-retention-exceptions",
   "title": "File Retention Exceptions",
   "category": "Data, Files, and Research",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Records held past their retention period stop being a habit nobody can explain: each approved hold is written down as one exception naming the records it covers, the reason, the owner, and the date it ends, and is reviewed on the day it lapses.",
   "fileCount": 9,
   "totalBytes": 45198,
   "bundleHash": "42dd2e95a69ebda6c6285241ecdf692a362cba66fbb9097ce7f97f1d17aa460b",
   "files": [
    "SKILL.md",
    "examples/project-drafts-held-for-a-client-query/WALKTHROUGH.md",
    "examples/reviewer-notes-renewed-then-closed/WALKTHROUGH.md",
    "reference/approving-and-refusing-exceptions.md",
    "reference/exception-terms-and-states.md",
    "reference/lapse-review-and-closure.md",
    "reference/the-exception-register.md",
    "templates/exception-entry.template.md",
    "templates/lapse-review-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=file-retention-exceptions"
  },
  {
   "id": "spreadsheet-formula-audit",
   "title": "Spreadsheet Formula Audit",
   "category": "Data, Files, and Research",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A workbook's numbers earn trust from its formulas, not its displayed values: every formula in scope is read range by range for errors, typed values hidden inside calculation chains, and references pointing at nothing, with each fault listed per sheet by cell and class.",
   "fileCount": 9,
   "totalBytes": 57185,
   "bundleHash": "f1a988efc4747571e9ee87a344e589fdb202778dd08f143dcc7faeec5072d818",
   "files": [
    "SKILL.md",
    "examples/monthly-budget-with-a-broken-total/WALKTHROUGH.md",
    "examples/stock-count-with-hardcoded-prices/WALKTHROUGH.md",
    "reference/error-and-reference-faults.md",
    "reference/formula-terms-and-scope.md",
    "reference/hardcoded-values-and-chains.md",
    "reference/reading-findings-by-severity.md",
    "templates/audit-record.template.md",
    "templates/sheet-findings-entry.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=spreadsheet-formula-audit"
  },
  {
   "id": "quote-terms-library",
   "title": "Quote Terms Library",
   "category": "Local Services / Sales",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every quote you send carries the same current terms: the payment, changes, warranty, and validity blocks live in one checked library, each with its own version, and every new quote is checked against that library before it goes out, so stale wording stops travelling from quote to quote.",
   "fileCount": 9,
   "totalBytes": 34967,
   "bundleHash": "1142c0f077c4750f916cbd1a0737af58a7319e93c77669d77aa9dade29db2488",
   "files": [
    "SKILL.md",
    "examples/kitchen-remodel-terms-caught-before-sending/WALKTHROUGH.md",
    "examples/roof-repair-library-first-build/WALKTHROUGH.md",
    "reference/building-the-library-from-past-quotes.md",
    "reference/checking-a-quote-before-it-goes-out.md",
    "reference/keeping-terms-honest-and-in-scope.md",
    "reference/versioning-blocks-and-retiring-stale-ones.md",
    "templates/library-index-and-check-log.template.md",
    "templates/terms-block.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=quote-terms-library"
  },
  {
   "id": "tool-checkout-log",
   "title": "Tool Checkout Log",
   "category": "Local Services / Field Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Who had which tool, on which job, and what came back damaged is answerable from one log: your own gear is checked out to a named person for a named job and back in against the same entry, with loss and damage written on that entry.",
   "fileCount": 9,
   "totalBytes": 31713,
   "bundleHash": "f20332d8735c938947c6848c77e5a4de93dfcd2c2173b8f67600c1969566af36",
   "files": [
    "SKILL.md",
    "examples/fence-line-clearing-loppers-did-not-come-back/WALKTHROUGH.md",
    "examples/porch-repair-saw-back-with-a-cracked-guard/WALKTHROUGH.md",
    "reference/checking-back-in-on-the-same-entry.md",
    "reference/checking-out-against-a-person-and-a-job.md",
    "reference/reading-the-log-for-what-is-still-out.md",
    "reference/recording-loss-and-damage.md",
    "templates/checkout-slip.template.md",
    "templates/tool-checkout-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=tool-checkout-log"
  },
  {
   "id": "invoice-dispute-handling",
   "title": "Invoice Dispute Handling",
   "category": "Local Services / Money",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A contested invoice gets settled from the record instead of argued from memory: each disputed line is checked against the accepted quote and the completion record, the reply is drafted in plain words from what the records show, and the settlement is recorded on the job.",
   "fileCount": 9,
   "totalBytes": 37812,
   "bundleHash": "6461c851645f7c60c1e2f0b9e0bf74cf90270f4db5472197a42b27a19ff3e852",
   "files": [
    "SKILL.md",
    "examples/gutter-job-elbow-line-held-pipe-line-removed/WALKTHROUGH.md",
    "examples/yard-clearance-third-load-and-an-hour/WALKTHROUGH.md",
    "reference/checking-each-line-against-the-records.md",
    "reference/drafting-the-answer-in-plain-words.md",
    "reference/reading-the-dispute-and-opening-the-record.md",
    "reference/settling-and-recording-the-outcome.md",
    "templates/dispute-check-sheet.template.md",
    "templates/settlement-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=invoice-dispute-handling"
  },
  {
   "id": "lead-source-tracking",
   "title": "Lead Source Tracking",
   "category": "Local Services / Sales",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "You stop feeding the sources that never send work: every lead is recorded with where it came from, outcomes are joined back to sources on a set review cadence, and effort goes to the sources your own record supports.",
   "fileCount": 9,
   "totalBytes": 40012,
   "bundleHash": "32c12f10013836bb550c8d948beb6058d5250cc529367e67fc7db009108526a1",
   "files": [
    "SKILL.md",
    "examples/marketplace-heavy-month-for-a-gutter-operator/WALKTHROUGH.md",
    "examples/spring-review-for-a-fence-operator/WALKTHROUGH.md",
    "reference/acting-on-the-review-without-overreading-it.md",
    "reference/recording-outcomes-and-joining-them-back.md",
    "reference/recording-the-source-at-intake.md",
    "reference/running-the-source-review.md",
    "templates/lead-source-log.template.md",
    "templates/source-review.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=lead-source-tracking"
  },
  {
   "id": "release-notes-drafts",
   "title": "Release Notes Drafts",
   "category": "Studio / Publishing",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Each version ships with notes a user can scan in seconds: the change record is rewritten in plain words about what changed for the user, grouped as new, improved, and fixed, with anything the record does not support left out, and every draft held for your approval.",
   "fileCount": 9,
   "totalBytes": 33234,
   "bundleHash": "6837a0fe86b5ad75e4cb62758390b579ce20421edd29fadbe12ce46c8effc3eb",
   "files": [
    "SKILL.md",
    "examples/a-fix-only-release-with-nothing-new/WALKTHROUGH.md",
    "examples/a-mixed-release-with-new-improved-and-fixed/WALKTHROUGH.md",
    "reference/grouping-and-ordering-the-notes.md",
    "reference/holding-the-draft-for-approval.md",
    "reference/reading-the-change-record.md",
    "reference/turning-changes-into-user-words.md",
    "templates/release-notes-check-log.template.md",
    "templates/release-notes-draft.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=release-notes-drafts"
  },
  {
   "id": "audience-question-bank",
   "title": "Audience Question Bank",
   "category": "Creator and Audience",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "The questions your audience actually asks stop getting lost: each one is kept in the asker's own words with where and when it was asked, grouped and counted from the bank itself, then turned into FAQ drafts first, Q and A content second, and product fixes where the same question keeps exposing the same gap.",
   "fileCount": 9,
   "totalBytes": 39105,
   "bundleHash": "60adaca8a91e98107dca0e990307634bbc5d520054a58a9f8f06031e5bd7c788",
   "files": [
    "SKILL.md",
    "examples/bakery-counter-questions-that-became-an-faq/WALKTHROUGH.md",
    "examples/bike-shop-questions-that-fixed-a-gap/WALKTHROUGH.md",
    "reference/capturing-questions-in-their-own-words.md",
    "reference/grouping-and-counting-questions.md",
    "reference/turning-questions-into-content-and-fixes.md",
    "reference/turning-the-bank-into-an-faq-page.md",
    "templates/faq-and-content-draft.template.md",
    "templates/question-bank.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=audience-question-bank"
  },
  {
   "id": "agent-retrospective-notes",
   "title": "Agent Retrospective Notes",
   "category": "Agent Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A period of agent work gets a written account instead of a fresh guess: what ran, what the records show went well or badly, and lessons kept as dated notes with the change each one produced.",
   "fileCount": 9,
   "totalBytes": 43588,
   "bundleHash": "6bd55bc70e1b4b34a52040629b975afffa48a8a290b4634c32824575b7500f89",
   "files": [
    "SKILL.md",
    "examples/a-busy-month-that-changed-how-reminders-were-sent/WALKTHROUGH.md",
    "examples/a-quiet-quarter-that-still-changed-two-rules/WALKTHROUGH.md",
    "reference/lesson-notes-fields.md",
    "reference/reading-a-period-for-lessons.md",
    "reference/retrospective-scope-and-sources.md",
    "reference/tracking-changes-to-the-next-period.md",
    "templates/lesson-note.template.md",
    "templates/retrospective.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-retrospective-notes"
  },
  {
   "id": "prompt-version-registry",
   "title": "Prompt Version Registry",
   "category": "Agent Operations",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every prompt change stops being a mystery: each version is kept whole in one registry with what changed, why, and which runs used it, and a named earlier version can be brought back whole when a change makes things worse.",
   "fileCount": 9,
   "totalBytes": 52208,
   "bundleHash": "88056c1dda87a3cc01e23b7dd5f8103c883befc00da4cf08b936675579e9761e",
   "files": [
    "SKILL.md",
    "examples/bringing-an-old-prompt-back-after-a-bad-change/WALKTHROUGH.md",
    "examples/tracing-which-prompt-version-ran-a-job/WALKTHROUGH.md",
    "reference/linking-runs-to-versions.md",
    "reference/naming-and-numbering-versions.md",
    "reference/registry-entry-fields.md",
    "reference/rollback-and-retirement.md",
    "templates/prompt-registry.template.md",
    "templates/prompt-version-entry.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=prompt-version-registry"
  },
  {
   "id": "tool-permission-scoping",
   "title": "Tool Permission Scoping",
   "category": "Agent Safety and Governance",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Each tool an agent can touch is scoped to the least access its stated job needs, worked out per task type and written down on one sheet, with every wider exception approved and dated.",
   "fileCount": 9,
   "totalBytes": 47635,
   "bundleHash": "28eb75083623cfc997cddd39c6eed2bd3e0da901611e8e5a4cf79983cbf4a570",
   "files": [
    "SKILL.md",
    "examples/adding-a-payment-tool-with-a-tight-scope/WALKTHROUGH.md",
    "examples/scoping-a-new-inbox-and-files-helper/WALKTHROUGH.md",
    "reference/exceptions-and-dated-approvals.md",
    "reference/least-scope-tests.md",
    "reference/task-types-and-tool-jobs.md",
    "reference/writing-the-scope-sheet.md",
    "templates/exception-request.template.md",
    "templates/tool-scope-sheet.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=tool-permission-scoping"
  },
  {
   "id": "canary-release-checks",
   "title": "Canary Release Checks",
   "category": "Studio / Shipping",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A release reaches everyone in stages instead of all at once: a small first audience, one fixed check list run at each stage, and a written widen, hold, or roll back call before it moves further.",
   "fileCount": 9,
   "totalBytes": 48777,
   "bundleHash": "48e658dbe85fb6213161bfade22e73d9f85ee08d8dbf18e473ea567e578dd2a8",
   "files": [
    "SKILL.md",
    "examples/a-clean-widening-that-reached-everyone/WALKTHROUGH.md",
    "examples/a-hold-then-rollback-at-the-second-stage/WALKTHROUGH.md",
    "reference/running-a-rollback-and-after.md",
    "reference/stage-plan-fields.md",
    "reference/the-fixed-check-list.md",
    "reference/widen-hold-or-rollback-calls.md",
    "templates/canary-stage-plan.template.md",
    "templates/stage-check-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=canary-release-checks"
  },
  {
   "id": "pdf-table-extraction",
   "title": "PDF Table Extraction",
   "category": "Data, Files, and Research",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Tables trapped in PDFs become spreadsheets you can check: rows and totals lifted page by page and reconciled against the totals printed in the source, with every unreadable cell flagged in place rather than guessed.",
   "fileCount": 9,
   "totalBytes": 46934,
   "bundleHash": "31bff007ad2eaa9c67c2b157975ec4e600d34cb5044f431a72a86a98120f4c68",
   "files": [
    "SKILL.md",
    "examples/a-rotated-statement-table-with-flagged-cells/WALKTHROUGH.md",
    "examples/a-three-page-stock-list-reconciled-to-its-totals/WALKTHROUGH.md",
    "reference/reading-cells-and-flagging-unreadable-ones.md",
    "reference/reconciling-rows-and-totals.md",
    "reference/spreadsheet-output-and-column-types.md",
    "reference/table-discovery-and-page-map.md",
    "templates/extraction-run-sheet.template.md",
    "templates/reconciliation-report.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=pdf-table-extraction"
  },
  {
   "id": "naming-convention-setup",
   "title": "Naming Convention Setup",
   "category": "Data, Files, and Research",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A new project starts with names that hold up: one written naming convention for files, versions, and deliverables, with checker rules that test each new name before it is saved.",
   "fileCount": 9,
   "totalBytes": 53155,
   "bundleHash": "fab2535d62f5c5f37f17b94ebb80455e27138a7341ca1877e560512d725355cf",
   "files": [
    "SKILL.md",
    "examples/designing-a-convention-for-a-new-research-study/WALKTHROUGH.md",
    "examples/starting-a-shared-drive-for-a-new-team/WALKTHROUGH.md",
    "reference/checker-rules.md",
    "reference/parts-of-a-good-name.md",
    "reference/rolling-out-and-revising.md",
    "reference/versioning-and-status-marks.md",
    "templates/convention-sheet.template.md",
    "templates/name-checker.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=naming-convention-setup"
  },
  {
   "id": "newsletter-sponsor-slots",
   "title": "Newsletter Sponsor Slots",
   "category": "Creator and Audience",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every sponsor slot in your newsletter is booked against a named issue in one dated inventory, with copy and link due dates tracked per booking and delivery confirmed from the issue that actually went out, so a paid slot is never double booked or run unproven.",
   "fileCount": 9,
   "totalBytes": 33472,
   "bundleHash": "6f413a259cb9cc1a3f7ab103ff56ad0c9efcd4b974f85624c012bcd260be12ce",
   "files": [
    "SKILL.md",
    "examples/autumn-launch-four-issues/WALKTHROUGH.md",
    "examples/spring-season-six-issues/WALKTHROUGH.md",
    "reference/booking-slots-against-issues.md",
    "reference/building-the-slot-inventory.md",
    "reference/disclosure-and-delivery-confirmation.md",
    "reference/tracking-copy-links-and-due-dates.md",
    "templates/issue-delivery-check.template.md",
    "templates/slot-inventory-ledger.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=newsletter-sponsor-slots"
  },
  {
   "id": "community-mod-queue",
   "title": "Community Mod Queue",
   "category": "Creator and Audience",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Your community's flagged items get worked as a queue against your written rules: each one read in full, decided on the rule it was flagged under, and logged with the action taken, with repeat patterns summed up at the end of a run so the rules can be tightened.",
   "fileCount": 9,
   "totalBytes": 32507,
   "bundleHash": "3837f5ed4f28e0d5897f4cc37212eb2c6d87ed2a96c55413c72a9628ec649cd5",
   "files": [
    "SKILL.md",
    "examples/creator-community-evening-queue/WALKTHROUGH.md",
    "examples/hobby-forum-monday-queue/WALKTHROUGH.md",
    "reference/recording-each-decision.md",
    "reference/spotting-repeat-patterns.md",
    "reference/working-the-queue-in-order.md",
    "reference/writing-the-rules-down.md",
    "templates/pattern-report.template.md",
    "templates/queue-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=community-mod-queue"
  },
  {
   "id": "seasonal-crew-hiring-pack",
   "title": "Seasonal Crew Hiring Pack",
   "category": "Local Services / Field Operations",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Seasonal hiring stops running on hurry and memory: the role is written from the work the season actually holds, the screening questions and pass marks are fixed before the first application arrives, trial days are paid and recorded against the same checks for everyone, and every candidate, hired or not, gets an ending in writing.",
   "fileCount": 9,
   "totalBytes": 35405,
   "bundleHash": "a02c1041495de42b715dee5e3b6ef0d787a4318b1701d5cc6df5a2cce069f44b",
   "files": [
    "SKILL.md",
    "examples/autumn-yard-crew-hiring-run/WALKTHROUGH.md",
    "examples/spring-cleanup-hiring-run/WALKTHROUGH.md",
    "reference/closing-out-offers-and-rejections.md",
    "reference/screening-questions-fixed-in-advance.md",
    "reference/trial-days-on-the-record.md",
    "reference/writing-the-role-from-the-work.md",
    "templates/hiring-pack-sheet.template.md",
    "templates/trial-day-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=seasonal-crew-hiring-pack"
  },
  {
   "id": "cash-handling-log",
   "title": "Cash Handling Log",
   "category": "Local Services / Money",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every cash payment is logged the moment it lands, with the job, the amount, and who took it, counted and deposited on a stated rhythm, and reconciled against the invoices it settles, so a shortage is named on the record the day it appears.",
   "fileCount": 9,
   "totalBytes": 37555,
   "bundleHash": "08dba643dac0dc9c5eb2b356fabea7370ffc12ecc4344c7f82be6268d4f1f2ef",
   "files": [
    "SKILL.md",
    "examples/clean-week-reconciled-in-full/WALKTHROUGH.md",
    "examples/short-count-named-same-day/WALKTHROUGH.md",
    "reference/counting-and-deposit-rhythm.md",
    "reference/logging-cash-at-receipt.md",
    "reference/reconciling-against-invoices.md",
    "reference/shortages-and-discrepancies.md",
    "templates/cash-log.template.md",
    "templates/reconciliation-and-deposit.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=cash-handling-log"
  },
  {
   "id": "service-guarantee-tracking",
   "title": "Service Guarantee Tracking",
   "category": "Local Services / Reputation",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every guarantee you promise on a job sits in one ledger with what was promised, on which job, and until when, and every claim against a guarantee is tracked to its recorded resolution.",
   "fileCount": 9,
   "totalBytes": 34047,
   "bundleHash": "74306d1fd53101063e96afd08740aa2045f434a65d8729b4af9558b3d58a99cb",
   "files": [
    "SKILL.md",
    "examples/kitchen-and-bath-ledger-opening/WALKTHROUGH.md",
    "examples/roofing-season-claims-review/WALKTHROUGH.md",
    "reference/closing-a-claim-with-resolution.md",
    "reference/recording-a-claim.md",
    "reference/reviewing-the-ledger-and-expiry.md",
    "reference/writing-a-guarantee-entry.md",
    "templates/claim-record.template.md",
    "templates/guarantee-ledger.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=service-guarantee-tracking"
  },
  {
   "id": "photo-backup-routine",
   "title": "Photo Backup Routine",
   "category": "Data, Files, and Research",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Your job photos move from phone to archive on one fixed routine: each batch counted, copied, reconciled, and verified in the archive before the phone copy is cleared, so the only copy of a job's photos never lives on a phone.",
   "fileCount": 9,
   "totalBytes": 34839,
   "bundleHash": "39cd9ff1ad59230e7fa76adbc8f1000bbed4dc9aad34fa840e4b9a072443a96b",
   "files": [
    "SKILL.md",
    "examples/mixed-jobs-discrepancy-held/WALKTHROUGH.md",
    "examples/roofing-week-clean-backup/WALKTHROUGH.md",
    "reference/choosing-the-routine-and-archive.md",
    "reference/clearing-the-phone-safely.md",
    "reference/counting-and-reconciling-batches.md",
    "reference/verifying-the-archive-copy.md",
    "templates/backup-log.template.md",
    "templates/batch-verification-note.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=photo-backup-routine"
  },
  {
   "id": "multi-agent-handoff-tests",
   "title": "Multi-Agent Handoff Tests",
   "category": "Agent Operations",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A changed brief format or a repeating handoff fault stops being a guess: a fixed set of scripted cases runs the handoff cold, one plain pass rule decides it, and every failure is logged against the brief field that broke until the same case passes on retest.",
   "fileCount": 9,
   "totalBytes": 53908,
   "bundleHash": "0bbe5992a43637e61d45504570bc63f2a303740dc0e74fdbb062b912938a9249",
   "files": [
    "SKILL.md",
    "examples/eight-cases-for-a-draft-to-review-handoff/WALKTHROUGH.md",
    "examples/six-cases-for-an-intake-to-research-handoff/WALKTHROUGH.md",
    "reference/building-the-case-set.md",
    "reference/handoff-test-terms.md",
    "reference/recording-failures-against-the-brief.md",
    "reference/the-pass-rule-and-scoring.md",
    "templates/handoff-test-case.template.md",
    "templates/handoff-test-run.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=multi-agent-handoff-tests"
  },
  {
   "id": "data-quality-spot-checks",
   "title": "Data Quality Spot Checks",
   "category": "Data, Files, and Research",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "You can say how many records are wrong and which rule fails most, before a customer or a payment run finds out: standing records are sampled on a cadence and checked against written quality rules, error rates are reported per rule, and each correction is routed to the record owner.",
   "fileCount": 9,
   "totalBytes": 43812,
   "bundleHash": "2e61f3c36c07825ed09361159c9c5a7144f26e608fa497514bb672650e9fa5d7",
   "files": [
    "SKILL.md",
    "examples/monthly-supplier-records-check/WALKTHROUGH.md",
    "examples/quarterly-customer-address-check/WALKTHROUGH.md",
    "reference/choosing-a-sample.md",
    "reference/reading-error-rates.md",
    "reference/routing-and-closing-corrections.md",
    "reference/writing-quality-rules.md",
    "templates/correction-note.template.md",
    "templates/spot-check-run.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=data-quality-spot-checks"
  },
  {
   "id": "secret-sharing-protocol",
   "title": "Secret Sharing Protocol",
   "category": "Agent Safety and Governance",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "The rare share of a secret stops being a handover in a hurry: one named recipient and one stated purpose, single use or a stated expiry, the share logged by label only, and the reach revoked or the value rotated when the window closes, so no past share sits open unaccounted.",
   "fileCount": 9,
   "totalBytes": 39874,
   "bundleHash": "e7f0b19a56288cd0ec8ac6f73f6d107ac4a969dd63f50139185f3125a3dcab06",
   "files": [
    "SKILL.md",
    "examples/giving-a-tool-one-afternoon-of-reach/WALKTHROUGH.md",
    "examples/one-off-share-to-a-covering-helper/WALKTHROUGH.md",
    "reference/choosing-the-channel-and-the-window.md",
    "reference/closing-the-share-revoke-or-rotate.md",
    "reference/logging-a-share-by-label.md",
    "reference/naming-the-recipient-and-the-use.md",
    "templates/share-log-entry.template.md",
    "templates/share-request-and-approval.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=secret-sharing-protocol"
  },
  {
   "id": "uptime-incident-roster",
   "title": "Uptime Incident Roster",
   "category": "Studio / Shipping",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "A gap in uptime cover is found in the roster and not during an outage: every coverage window carries a named holder and a named backup, the handoff between holders and the contact order are written down, and the whole roster is reviewed on a cadence.",
   "fileCount": 9,
   "totalBytes": 42202,
   "bundleHash": "ee6e67578d511fa8c5285a4a560bb6738a215990528cc9c9f0271d4e67867a2a",
   "files": [
    "SKILL.md",
    "examples/four-person-team-fixes-night-handoffs/WALKTHROUGH.md",
    "examples/two-person-studio-finds-a-sunday-gap/WALKTHROUGH.md",
    "reference/finding-gaps-and-thin-cover.md",
    "reference/handoffs-and-contact-order.md",
    "reference/review-cadence-and-triggers.md",
    "reference/roster-terms-and-windows.md",
    "templates/coverage-entry.template.md",
    "templates/roster-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=uptime-incident-roster"
  },
  {
   "id": "docs-link-checking",
   "title": "Docs Link Checking",
   "category": "Studio / Publishing",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Readers stop landing in the wrong place: on a set cadence every link and cross-reference in the docs is followed to its target, dead or moved targets are listed per page, and each one is fixed in place or flagged with the replacement recorded beside it.",
   "fileCount": 9,
   "totalBytes": 38846,
   "bundleHash": "ea3b0dcdfc9487b93d80b02066a109c29c282b69963d81dbd20e6d316e652203",
   "files": [
    "SKILL.md",
    "examples/quarterly-sweep-that-found-moved-guides/WALKTHROUGH.md",
    "examples/release-week-check-after-a-docs-move/WALKTHROUGH.md",
    "reference/cadence-and-coverage.md",
    "reference/checking-a-page-step-by-step.md",
    "reference/fix-or-flag-decisions.md",
    "reference/link-kinds-and-targets.md",
    "templates/link-check-record.template.md",
    "templates/page-link-entry.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=docs-link-checking"
  },
  {
   "id": "translation-glossary-keeping",
   "title": "Translation Glossary Keeping",
   "category": "Data, Files, and Research",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "The same term stops being rendered two ways: one glossary record holds each term's approved rendering in each language and the context that decides between variants, and a new term enters the record only with the source it was admitted from.",
   "fileCount": 9,
   "totalBytes": 55566,
   "bundleHash": "ef5357eaaae0cc51950af66400d8adc794859953e10c876b47f9d3fa598309b3",
   "files": [
    "SKILL.md",
    "examples/cleaning-up-after-two-variants-spread/WALKTHROUGH.md",
    "examples/first-glossary-for-a-plant-care-guide/WALKTHROUGH.md",
    "reference/admitting-and-retiring-terms.md",
    "reference/checking-a-batch-against-the-glossary.md",
    "reference/choosing-between-variants.md",
    "reference/glossary-terms-and-entry-parts.md",
    "templates/glossary-entry.template.md",
    "templates/glossary-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=translation-glossary-keeping"
  },
  {
   "id": "estimate-vs-actual-review",
   "title": "Estimate vs Actual Review",
   "category": "Local Services / Money",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Closed jobs stop teaching nothing: each one is compared estimate line against actual line on a set cadence, the lines that keep running over or under are named as patterns, and the price list or scoping note adjustments those patterns support are drafted for your approval.",
   "fileCount": 9,
   "totalBytes": 42655,
   "bundleHash": "3105d7a14ad780bfe79fa1d1cd53303ac59ec674471ec7c9910487c3ef9a73c5",
   "files": [
    "SKILL.md",
    "examples/deck-repair-review-that-changed-the-scope/WALKTHROUGH.md",
    "examples/fence-repairs-monthly-pattern-review/WALKTHROUGH.md",
    "reference/lining-up-estimate-and-actual-lines.md",
    "reference/naming-the-recurring-patterns.md",
    "reference/running-the-review-cadence.md",
    "reference/turning-the-review-into-adjustments.md",
    "templates/estimate-vs-actual-sheet.template.md",
    "templates/review-pattern-and-adjustment-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=estimate-vs-actual-review"
  },
  {
   "id": "local-event-sponsorship-log",
   "title": "Local Event Sponsorship Log",
   "category": "Local Services / Marketing",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Every sponsorship sits in one commitment log, what you promised to give and what the event promised back, with dates and deliverables tracked on both sides, so the renewal is decided from what actually came back instead of from memory.",
   "fileCount": 9,
   "totalBytes": 38306,
   "bundleHash": "e701834d4c0c9eeb9a6537f084bd92726ff5995b9d5c3ac6384eeceb18953b34",
   "files": [
    "SKILL.md",
    "examples/county-fair-banner-and-booth/WALKTHROUGH.md",
    "examples/youth-baseball-season-not-renewed/WALKTHROUGH.md",
    "reference/logging-what-actually-came-back.md",
    "reference/making-the-renewal-decision-from-the-record.md",
    "reference/recording-what-was-promised-each-way.md",
    "reference/tracking-dates-and-deliverables.md",
    "templates/renewal-review.template.md",
    "templates/sponsorship-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=local-event-sponsorship-log"
  },
  {
   "id": "equipment-rental-scheduling",
   "title": "Equipment Rental Scheduling",
   "category": "Local Services / Field Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Rented equipment stops being double counted: every booking sits on one schedule with its window, pickup and return times, and the job it serves, and every change is checked against that schedule, so a clash is caught on the page before it is caught on the morning.",
   "fileCount": 9,
   "totalBytes": 36304,
   "bundleHash": "ae159174441868494952a932d06b4a1fb9b9e12713bf557b1683fada2534afe4",
   "files": [
    "SKILL.md",
    "examples/chipper-extension-that-held/WALKTHROUGH.md",
    "examples/mini-excavator-clash-when-a-job-moved/WALKTHROUGH.md",
    "reference/booking-a-rental-window.md",
    "reference/catching-and-working-a-clash.md",
    "reference/extending-or-shortening-a-rental.md",
    "reference/pickup-and-return-times.md",
    "templates/booking-and-change-note.template.md",
    "templates/rental-schedule.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=equipment-rental-scheduling"
  },
  {
   "id": "winterization-checklist-runs",
   "title": "Winterization Checklist Runs",
   "category": "Local Services / Field Operations",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Each property gets the same winterization run every season, taps, pipes, heating, and gutters worked in order and marked as they stand, with findings and follow-ups written on the run record, so next season starts from this season's record instead of from memory.",
   "fileCount": 9,
   "totalBytes": 46996,
   "bundleHash": "185c037eb5cd45947c517db6c6a0fe3614bc1c2fa24f68f626e3be3fedf1bd5d",
   "files": [
    "SKILL.md",
    "examples/single-family-house-first-run/WALKTHROUGH.md",
    "examples/small-rental-duplex-with-open-items/WALKTHROUGH.md",
    "reference/heating-and-gutter-checks.md",
    "reference/recording-findings-and-follow-ups.md",
    "reference/taps-pipes-and-freeze-risk-notes.md",
    "reference/the-full-winterization-checklist.md",
    "templates/follow-up-and-next-season-summary.template.md",
    "templates/winterization-run-record.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=winterization-checklist-runs"
  },
  {
   "id": "quote-photo-attachments",
   "title": "Quote Photo Attachments",
   "category": "Local Services / Sales",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "The photos that go out with a quote are chosen from the job's own record and labeled to the quote line each one supports, and anything the record does not back is held back with its reason logged, so the customer can match every photo to its line.",
   "fileCount": 9,
   "totalBytes": 34016,
   "bundleHash": "db5ceebd51af8ac29e5a562a94f3acd4d98c4130374788806674cd1fba40d90d",
   "files": [
    "SKILL.md",
    "examples/deck-repair-quote-with-labeled-photos/WALKTHROUGH.md",
    "examples/gutter-quote-with-a-photo-left-out/WALKTHROUGH.md",
    "reference/checking-the-attachment-set-before-it-goes-out.md",
    "reference/choosing-photos-from-the-job-record.md",
    "reference/holding-back-photos-the-record-does-not-back.md",
    "reference/labeling-each-photo-to-its-quote-line.md",
    "templates/photo-selection-log.template.md",
    "templates/quote-attachment-sheet.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=quote-photo-attachments"
  },
  {
   "id": "short-video-caption-checks",
   "title": "Short Video Caption Checks",
   "category": "Creator and Audience",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Captions stop quietly changing what a video says: every caption line is checked against the spoken words before posting, errors are listed per video and fixed in the caption file itself, and names and numbers get a second pass of their own.",
   "fileCount": 9,
   "totalBytes": 34102,
   "bundleHash": "bf78a117d253300e06eb63d5f68f5f315adba407e40e3ea0463d0bbd02b793ce",
   "files": [
    "SKILL.md",
    "examples/kitchen-tip-name-and-time-fixed/WALKTHROUGH.md",
    "examples/workshop-demo-price-and-place-fixed/WALKTHROUGH.md",
    "reference/checking-captions-against-the-audio.md",
    "reference/fixing-errors-in-the-caption-file.md",
    "reference/listing-errors-per-video.md",
    "reference/names-numbers-and-places-second-pass.md",
    "templates/caption-check-sheet.template.md",
    "templates/caption-error-list.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=short-video-caption-checks"
  },
  {
   "id": "agent-fleet-cost-review",
   "title": "Agent Fleet Cost Review",
   "category": "Agent Operations",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Get a periodic review that joins what each agent cost to the work it actually delivered, ending with one recorded call per agent, keep, narrow, or retire, with the reason in plain words.",
   "fileCount": 9,
   "totalBytes": 41170,
   "bundleHash": "f7b1878ab97de413e4e2c737847d19ae3526e68106e7e21ad6ffd0262c5acad7",
   "files": [
    "SKILL.md",
    "examples/first-review-for-a-four-agent-fleet/WALKTHROUGH.md",
    "examples/quarterly-review-that-narrowed-two-agents/WALKTHROUGH.md",
    "reference/joining-costs-to-delivered-work.md",
    "reference/review-evidence-and-gaps.md",
    "reference/setting-the-review-cadence.md",
    "reference/the-three-calls.md",
    "templates/agent-cost-review-entry.template.md",
    "templates/fleet-cost-review.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=agent-fleet-cost-review"
  },
  {
   "id": "launch-day-runbook",
   "title": "Launch Day Runbook",
   "category": "Studio / Shipping",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Run the public launch day hour by hour from one written runbook, with the checks before the announcement closed on evidence, posts and pages landing in a set order, a named watcher on every surface, and rollback and correction lines approved before the first post goes out.",
   "fileCount": 9,
   "totalBytes": 40589,
   "bundleHash": "24d6ca1b1c0d9e17202fcbb4967795cc4858f42acd327d5c0afa8275b06b251d",
   "files": [
    "SKILL.md",
    "examples/first-launch-for-a-small-tool/WALKTHROUGH.md",
    "examples/launch-day-with-a-late-correction/WALKTHROUGH.md",
    "reference/before-the-announcement-checks.md",
    "reference/order-of-posts-and-pages.md",
    "reference/rollback-and-correction-lines.md",
    "reference/who-watches-what.md",
    "templates/launch-day-log.template.md",
    "templates/launch-day-runbook.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=launch-day-runbook"
  },
  {
   "id": "archive-integrity-checks",
   "title": "Archive Integrity Checks",
   "category": "Data, Files, and Research",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Archived files get tested on a set cadence against the archive index, each one opened in full and its hash compared with its index entry, so every failure is listed per file and can be repaired from the surviving copy while a good copy still exists.",
   "fileCount": 9,
   "totalBytes": 41509,
   "bundleHash": "fd3d6456bdd3be5ebb5ba7d16d905325ad19c007d7448bc9391d997c22e62bb5",
   "files": [
    "SKILL.md",
    "examples/first-check-for-a-small-office-archive/WALKTHROUGH.md",
    "examples/quarterly-check-that-found-three-failures/WALKTHROUGH.md",
    "reference/cadence-and-scope.md",
    "reference/check-fields-and-statuses.md",
    "reference/reading-the-hash-check.md",
    "reference/repair-from-the-surviving-copy.md",
    "templates/failure-list.template.md",
    "templates/integrity-check-log.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=archive-integrity-checks"
  },
  {
   "id": "customer-win-back-notes",
   "title": "Customer Win-Back Notes",
   "category": "Local Services / Reputation",
   "priceUSD": 12,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Lapsed customers are reviewed one by one from their own job records, and a plain win-back note is drafted for each from what that record supports, held for your approval before anything is sent, with the answer recorded either way.",
   "fileCount": 9,
   "totalBytes": 30945,
   "bundleHash": "71fbf95e3d288bd27b5bda8a4dd8981bd216420f39c56e6bdc657be8ef8b9cd7",
   "files": [
    "SKILL.md",
    "examples/hauling-customer-after-a-long-gap/WALKTHROUGH.md",
    "examples/yard-cleanup-customer-who-went-quiet/WALKTHROUGH.md",
    "reference/drafting-the-win-back-note.md",
    "reference/finding-lapsed-customers.md",
    "reference/holding-for-approval.md",
    "reference/recording-the-answer.md",
    "templates/win-back-log-entry.template.md",
    "templates/win-back-note.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=customer-win-back-notes"
  },
  {
   "id": "year-plan-budget-setup",
   "title": "Year Plan Budget Setup",
   "category": "Local Services / Money",
   "priceUSD": 15,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Your coming year runs against a written plan built from your own prior year records, with a planned figure and a reason for every income and expense class, totals worked in the open, and set review dates for reading the plan against actuals while the year can still be steered.",
   "fileCount": 9,
   "totalBytes": 41226,
   "bundleHash": "57d2b56fa39b6d7f19446f987d375cda713153e16113075f2b775ffbe7cccd5b",
   "files": [
    "SKILL.md",
    "examples/first-year-plan-for-a-small-crew/WALKTHROUGH.md",
    "examples/second-year-plan-after-a-full-year-of-actuals/WALKTHROUGH.md",
    "reference/carrying-classes-forward.md",
    "reference/handling-classes-that-change.md",
    "reference/reviewing-plan-against-actuals.md",
    "reference/setting-planned-figures-with-reasons.md",
    "templates/plan-review.template.md",
    "templates/year-plan.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=year-plan-budget-setup"
  },
  {
   "id": "skill-stack-planner",
   "title": "Skill Stack Planner",
   "category": "Agent Operations",
   "priceUSD": 19,
   "pricing": "one-time",
   "version": "1.0.0",
   "blurb": "Plans which skills a workflow needs from end to end, with each step matched to a skill the operator holds or to a named gap, and the gaps ordered by what blocks the most work, so the operator can see the cover they have and the gaps that matter first.",
   "fileCount": 9,
   "totalBytes": 41357,
   "bundleHash": "586006291f0171ad7d6071de56da9926cee897f0f9d973e6a56f5179280d6c0e",
   "files": [
    "SKILL.md",
    "examples/planning-a-monthly-report-workflow/WALKTHROUGH.md",
    "examples/planning-coverage-for-a-client-onboarding-workflow/WALKTHROUGH.md",
    "reference/keeping-the-plan-current.md",
    "reference/matching-steps-to-skills.md",
    "reference/ordering-gaps-by-blocked-work.md",
    "reference/stack-plan-fields.md",
    "templates/skill-stack-plan.template.md",
    "templates/workflow-step-map.template.md"
   ],
   "hubUrl": "https://ghostdeveloperstudio.com/hub/#/catalog?skill=skill-stack-planner"
  }
 ]
}
