[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6P6KGNF97D80D4G3742HWRT":3,"skill-same:01M6P6KGNF97D80D4G3742HWRT":61},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":42,"repositoryHtmlUrl":43,"repositoryHomepageUrl":44,"ownerHtmlUrl":45,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":46,"install":47,"resources":60},"01M6P6KGNF97D80D4G3742HWRT","chama-bar",null,"Use the top status bar (ChamaBar, top-right label) as Chama's one always-visible signal. Read before adding any loading indicator, \"needs you\" state, warning, or status text anywhere in the app.","jesuspirate\u002Fchama","jesuspirate","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F59404315?v=4","01M6P6JMQVG0VWZWRJK0N8CTJV","Bitcrazy","01M6P6JMVYWC8WWJYQZRW2J0EQ",4,"MIT","https:\u002F\u002Fgithub.com\u002Fjesuspirate\u002Fchama\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fchama-bar\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"bar","chama bar","status","state","indicator","text","read","use","as","app","warning","loading","you","top","signal","2026-11-10 10:12:30",false,"---\nname: chama-bar\ndescription: Use the top status bar (ChamaBar, top-right label) as Chama's one always-visible signal. Read before adding any loading indicator, \"needs you\" state, warning, or status text anywhere in the app.\n---\n\n# The bar is the signal\n\n`src\u002Fui\u002Fpanels\u002FChamaBar.tsx` renders one label at the top right of every\nscreen, on every device. `decideChamaBarLabel` in `src\u002Fui\u002Fdecisions.ts` is\nthe pure function that chooses it. Jet, 2026-09-26: \"always find a smooth\nway to reuse that bar for important information, always visible.\"\n\n## Rule\n\nBefore adding a spinner, a banner, a toast, a badge or a status line\nanywhere, ask: is this something the person needs to know from any screen?\nIf yes, it belongs in the bar, through `decideChamaBarLabel`, not in a new\nwidget. If it only matters on one screen (a button's own busy state, a\nfield error), keep it local.\n\n## Priority (top wins, one label at a time)\n\nSince the v7 redesign the bar renders as a status capsule\n(`ChamaBarLabelPill`); colours below are the capsule's theme tokens.\n\n1. `unreachable` — the federation can't be reached. Attention fill, tap = reconnect.\n2. `needs-you` — a trade is waiting on this person: sign, confirm, claim,\n   re-post, reply to a dispute. Attention fill, tap opens the most urgent trade.\n   **Every state that stalls a trade until this person acts must count\n   here** — on-chain included (deposit to send, payout to sign, key to\n   publish). If a trade can be stranded because nobody told the person,\n   the bar was wrong.\n3. `stranded` — sats recoverable. Attention tint, tap = recover.\n4. `in-trade` — N active trades, sats in escrow. Neutral with a lock\n   (escrow is normal and safe; no role colour), tap = the trade.\n5. `syncing` — the initial trade read from relays is still running\n   (`myTradesLoading`). The spinning wordmark dot, small, no text needed\n   beyond \"Syncing…\". Never for background refreshes.\n6. `ready` — \"Ready\". Quiet, with a positive dot.\n\nA new state slots into this list with a reason; it never sits beside the\nbar as a second indicator.\n\n## Copy\n\nOne short line, plain words, what it is and what tapping does. Numbers\nonly when they are true on every device (a count of this person's own\ntrades is; a count of someone else's disputes is not). No jargon\n(\"PSBT\", \"Esplora\", \"relay\"): say \"payout\", \"block explorer\", \"network\".\nThis follows the same rule as the normies-simplification skill; when in\ndoubt, the simpler sentence wins.\n\n## Tests\n\n`decideChamaBarLabel` is pure: add a case for every new state in\n`src\u002Fui\u002Fdecisions.tests.ts` (or the existing bar suite), including the\npriority against its neighbours.\n","# The bar is the signal\n\n`src\u002Fui\u002Fpanels\u002FChamaBar.tsx` renders one label at the top right of every\nscreen, on every device. `decideChamaBarLabel` in `src\u002Fui\u002Fdecisions.ts` is\nthe pure function that chooses it. Jet, 2026-09-26: \"always find a smooth\nway to reuse that bar for important information, always visible.\"\n\n## Rule\n\nBefore adding a spinner, a banner, a toast, a badge or a status line\nanywhere, ask: is this something the person needs to know from any screen?\nIf yes, it belongs in the bar, through `decideChamaBarLabel`, not in a new\nwidget. If it only matters on one screen (a button's own busy state, a\nfield error), keep it local.\n\n## Priority (top wins, one label at a time)\n\nSince the v7 redesign the bar renders as a status capsule\n(`ChamaBarLabelPill`); colours below are the capsule's theme tokens.\n\n1. `unreachable` — the federation can't be reached. Attention fill, tap = reconnect.\n2. `needs-you` — a trade is waiting on this person: sign, confirm, claim,\n   re-post, reply to a dispute. Attention fill, tap opens the most urgent trade.\n   **Every state that stalls a trade until this person acts must count\n   here** — on-chain included (deposit to send, payout to sign, key to\n   publish). If a trade can be stranded because nobody told the person,\n   the bar was wrong.\n3. `stranded` — sats recoverable. Attention tint, tap = recover.\n4. `in-trade` — N active trades, sats in escrow. Neutral with a lock\n   (escrow is normal and safe; no role colour), tap = the trade.\n5. `syncing` — the initial trade read from relays is still running\n   (`myTradesLoading`). The spinning wordmark dot, small, no text needed\n   beyond \"Syncing…\". Never for background refreshes.\n6. `ready` — \"Ready\". Quiet, with a positive dot.\n\nA new state slots into this list with a reason; it never sits beside the\nbar as a second indicator.\n\n## Copy\n\nOne short line, plain words, what it is and what tapping does. Numbers\nonly when they are true on every device (a count of this person's own\ntrades is; a count of someone else's disputes is not). No jargon\n(\"PSBT\", \"Esplora\", \"relay\"): say \"payout\", \"block explorer\", \"network\".\nThis follows the same rule as the normies-simplification skill; when in\ndoubt, the simpler sentence wins.\n\n## Tests\n\n`decideChamaBarLabel` is pure: add a case for every new state in\n`src\u002Fui\u002Fdecisions.tests.ts` (or the existing bar suite), including the\npriority against its neighbours.\n",{"name":5,"description":7},"main","bfa54ee1c26dfbc51dccb8fa0eb6811d64e9ca98",".agents\u002Fskills\u002Fchama-bar",1,"https:\u002F\u002Fgithub.com\u002Fjesuspirate\u002Fchama","https:\u002F\u002Fgetchama.app","https:\u002F\u002Fgithub.com\u002Fjesuspirate","2026-11-12 19:54:14",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add jesuspirate\u002Fchama --skill chama-bar",{"tool":53,"command":54},"bunx","bunx skills add jesuspirate\u002Fchama --skill chama-bar",{"tool":56,"command":57},"pnpm","pnpm dlx skills add jesuspirate\u002Fchama --skill chama-bar","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjesuspirate\u002Fchama\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fchama-bar\u002FSKILL.md",true,[],[62,67,92],{"skillNo":63,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":64,"categories":65,"keywords":66,"publishedAt":34},"01M6P6MFGF8KCZDYT6GNGDN7E8","https:\u002F\u002Fgithub.com\u002Fjesuspirate\u002Fchama\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Fchama-bar\u002FSKILL.md",[],[20,19],{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":34},"01M6P6KTG53QG1MRAHPPAN29WA","who-holds-the-money","Wherever sats sit still, the screen names who holds them and for how long. Read before touching any wallet, fund, lock, claim, circle, bond or federation surface, any copy containing \"safe\", \"secure\", \"escrow\", \"trustless\" or \"Chama does not hold your funds\", and any new rail or custody mode.","https:\u002F\u002Fgithub.com\u002Fjesuspirate\u002Fchama\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwho-holds-the-money\u002FSKILL.md",[],[74,75,25,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91],"who holds the money","money","federation","fund","Wallet","claim","screen","long","copy","escrow","circle","mode","lock","for","new","how","safe","secure",{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":34},"01M6P6KPW02KEHB6984GRXJ2EQ","proof-of-conduct","How Chama judges a key — by conduct every device can verify from relays and the timechain, never by opinion. Read before touching reputation, ratings, arbiter records, listing badges, \"trusted\" lanes, or any number shown next to a person.","https:\u002F\u002Fgithub.com\u002Fjesuspirate\u002Fchama\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fproof-of-conduct\u002FSKILL.md",[],[99,100,101,102,89,25,103,104,105,106,107,108,109,110,111,112,113],"proof","proof of conduct","conduct","number","reputation","never","Arbiter","device","next","records","can","person","ratings","listing","verify"]