method

what the comparison numbers on the check page are, where they came from, and what they cannot tell you. written for a sceptical reader.

this page loads nothing but its own files. no analytics, no cookies. two local storage keys remember your language and your theme, nothing else.

corpus

the corpus is Grok Bot charters published as plain text in public GitHub repositories, snapshot 2026-09-04. the strict corpus is the source set minus 3 repositories that are not the unit of analysis (skill libraries and directories of "set up a new bot for me" setup prompts). this is not a census of public Grok Bot templates. install-link directories are excluded because their configuration text lives on x.ai, which this project never fetches.

strict corpus: 1596 charters from 86 repositories, inclusion 40 to 3000 words, english only, one charter = one bot role description a person could paste into a bot profile. full corpus (the 3 excluded repositories added back) is 2282 charters and is used only as a robustness line in the report, never on the check page.

every source is pinned to a commit sha resolved on the snapshot date and fetched as a tarball by that sha. api.github.com and x.ai were never contacted. all charters are english: the detectors, their token lists and the hand labels are english only, and results on any other language are not reliable.

source set: 89 repositories were read in total: the curated lists' own picks plus 253 repositories linked from the two discovery lists, of which 171 were excluded by the standing exclusion classes (code tools, connectors, bridges, installers, link directories, documentation), 8 could not be fetched, and 74 were fetched and put through the same inclusion test. every repository is pinned to a commit sha. sampling frame: charters published in repositories linked from two curated awesome-lists. no code search was used.

sources

repositorybranchcommit shastatus in strict corpuscharters
AmitMirgal/orgbot-hubmain7f65a8011fa119c1ab4321d4437170bd6f8d3ea1in corpus1
Chakhdz/grok-bot-token-savermasterfe82eb28665bdef430020999f448013e8491a203in corpus1
EndeavorYen/grok-bot-skillsmaind1a0e777842821a95bcdab6c88c1a5ae37d0d194in corpus14
GlobalTC/steermain2423bf4d347b6ec6c2208d7d5aa9ef6973e9c600in corpus3
HAEGONG/grok-bot-profilesmain6f3d07e566008175486228a509bd8461e5efb85fin corpus12
HammeredSmithy/bull-trademain11feb72876a9572746527521fe05e4cc48f00abdin corpus28
Heyvhuang/werewolf-gamemastermain2f18703f30815a295d52f6c09812a076e8354329in corpus1
HxHippy/grok-bot-archmainb7c44ba488f4da42d0006a3c126e597ac5a7d465in corpus0
KinGao294/grok-bot-orange-bookmain1f689f8c7c9143dcdbdbd6ae631f9bdcd8572b23in corpus0
Logos52/grok-bot-packetsmain20903e2a2830010345f7227e1fa685c3722c8f9bin corpus19
Octo-o-o-o/grok-job-kitmain90894b2f42723dcae6e25c3e5252f1bfedec6019in corpus10
OpulentiaAI/gtm-agent-automationsmain568371d0b5c5c0ed28597dcc93ac5b6ce938967fin corpus262
PROJECT-073-X/grok-bot-workforcemain9786f76311c88ad3f12b9ec87ba995d9f994e332in corpus1
PramodDutta/botskillsmainabe793060a7e7ad18e89e1f254e4ad0806556354in corpus119
Steltic/steltic_grokbotmaina76d5f315509b3a7c488844c6f1f0dfbb932785bin corpus1
Uncle-Gizmo/grok-bot-infomaine927c1836f80134c898ec94a40d2ce635c6c910ain corpus1
WeSs1982/echo-chief-of-staffmain874dc50ec41637233f21bbc0f5256b938afa8b98in corpus0
WebDevJasonCameron/ExploreGrokBotmain58fe3532ccbd3aecf8af06ea4a3706ac659d8f8cin corpus5
YannisKiefer/grokbot-xmaincade7d95e2b60c2c60c53648d4d10ba87ae18443in corpus10
ZeroPointRepo/GrokBotDevmaind2aa69f8640e2ccef42f4b11b664e234c34c211din corpus137
ZooHero500/playsmain65fbafc806431ed079a03a03ad474710f65ad31fin corpus110
a70win-wq/usegrokbotmain49c1dd3182ed14d1d76a99be4034ce153323b2cain corpus1
aaravarr/openbotmainb694d788b1e558112d0443943b1e0ba740075d92in corpus3
andrewkittridge/grokorymain193608e9304de658a77e218c73fea02f41136867in corpus4
banana2556/cursor-grokbot-helpermain19af0152c015848d5a10bfe1c85d9143bef08929in corpus0
bcharleson/grokbot-peekaboomain862172e0abfe15c1abf1efc538545fc5f214bb18in corpus1
codejunkie99/rosterroommaina7ec5620c85ec19b1d1ac22321ccce531455484fin corpus80
composio-community/awesome-grok-botsmaind732af02159bc2cc8f350422aaf09908822c2882in corpus20
cs68614-hash/awesome-grokbot-templatesmain577e696d4a7c128760a7952636c2d10cccfcc9cain corpus0
dadamingmax/Grok-Bot-Setup-and-Usage-Guidemainad3f3fbb2ae40582379910710a5521d715e72f8cin corpus0
danielvegac/grok-bot-startup-services-outboundmain2ba35f365daa6eb7cf9cc7d52f6597b24c9aff24in corpus4
ddhjy/grok-bot-hubmain37e4ce343bee7cd05a972b1efda218232e525142in corpus0
divo12/awesome-grok-bot-templatesmain184d4cc50c34899c00d21ba87ce2eb82da887c27in corpus10
dragosroua/grok-bot-add-pluginmain80459c4543d2845492fc64dc2ddc4a366e8564fdin corpus6
ellelion/botteamsmaine478f8de0d6ee32b985dcb8c08d1d0fd5232bf9din corpus70
enderzcx/grok-bot-switchmainc612786ef8ec5e70c67fc691fea85cee1f06e724in corpus0
ethanolivertroy/grokbot-cloudflare-inboxmain9c994514f37738482186b4c422c875f573b4ed98in corpus2
fantomsuj/grokbotmain7cf5d3d97d8df426f63a40b06dd408379fa5dc11in corpus0
function1st/PhoneZeromain98a72eb9456477ba3985d4f7a7dc0a22c22c50d2in corpus11
galleonlabs/hypergrok-trading-deskmain0274d9e2429ff68bef4fd05099deb3f0899fe593in corpus27
hariou/technocore-grokbot-jamastera442d32a6a6394826616407be9f8c20136e23e5fin corpus1
hesreallyhim/awesome-claude-codemaindb4db53566d757e31d75536627747fcaef01d7f1in corpus0
jaredtrichard/grok-factorymain2e9f8e55935e9ec3cb8c1fa823c64bd043c4351bin corpus10
jaredtrichard/grok-researchmain957bf951721ba0004b7c8d61559d44810e3e6666in corpus4
jaskirat1616/grok-skillsmaindfadd540f887c3834e9043a29e9ff402b48aaf66in corpus186
jay-sahnan/growth-grok-botsmain8cf16436859e2dd3a47f40f1d328052f5a6e3c85in corpus0
jblack4vols/grok-botmain6f284805b7351e8022d3286624290d13cc3c5293in corpus2
jeremybrasher/grokbot-skillsmainfa7d4587d50a589b46ed9c3576b5f340549e49a3in corpus92
jinank/great-grokbotsmain1c318bf616d89574cc1ecde8758cf0c1950badd6in corpus0
kunchenguid/grok-shipmainae1f5a787e544dcec69b819370615b2fcbef0eabin corpus7
kwakseongjae/awesome-grok-botmain1023020613037e354c4526ec8ff2a26549566125in corpus3
kydlikebtc/awesome-grokbotmain00304a366a46657b43c2bdc061f3b69fa0f1db48in corpus2
lazerusrm/botroutermain118f909ab0e4e16f15d8b932ced562d65f1dba38in corpus1
lroolle/awesome-grokbot-templatesmaina12c2684a994b17647841b882d89d27550323805in corpus0
lsj210001/crew-contractmain06d24e73f55e6550bcc53d9a8bebea80c6170b0bin corpus0
lureilly1/botjobsmain76e9a0e7491730d067d38c51385718b2232d244ain corpus0
mKay00/grok-bot-second-brainmasterdfa5d1dc83e34f9a93346c703334027d030d8876in corpus11
mahathir69/technocore-safemain96d7006d351a7d7de0130aecfb5c00c3a1a3722cin corpus3
maplefukku/grok-bot-opsmainc3e54f9e078698b4195abf9a130ed43ba8d4e3bein corpus1
matsutouya/note-kojomainfbf79e2c3c5a60544e6fc3ba5a87105132568c55in corpus0
matteoantoci/firstmatemasterdc26ad39f5584f23c8408478c6799c2bd69b0a1fin corpus2
mergisi/awesome-grokbotmain6210f2034c5737d1be100e227c8d308d9757ecf4in corpus113
mostdesign01-sudo/grokbot-use-casesmain9cdb036e17099a6f08784219cfba5294a03883a6in corpus0
mozilla/diversitymaster5e612f24d537b5e7b80ae0aa730c32e499b68db4in corpus10
mtrxdev/build-briefmainc158ee5333d956b18efc11be187e558485b6684bin corpus3
napiermd/heavy-lift-cloud-agentsmain3ebcbd91d5d2b0ab69f7f178570d3c24f07ae484in corpus1
nescafe2009/dsh-grokbotmain8a3b70813fe5aa720ecddd940d65ec8d58acd771in corpus0
njpatel/omabotmain801cb4b1dc3d20e75b43094aed36c3703e3f72e5in corpus0
noam99moyal-sudo/podcast-summary-botmainf9b8e871de6880646ff5ad2b6e2a0464dcd44b4fin corpus1
novusordos666/grokbot-outreach-agent-teammain4ea1fd613329f66a4c51c2f0c231afd0b471a18cin corpus6
owenisas/grokbot-openaimainbd2e81fe991f699d0d2482d665fef32be1088131in corpus0
p10ns11y/botifymain8e249c3b84262f5c1eaadd1aa7441de5e28f7df5in corpus2
pacifico-1106/grokbot-control-planemain4162e5218537d3b3c6213a48195a556b01d3676cin corpus1
palehonk0-o/grokbot-market-memorymain9314e92d77b86c94df6e023e106c76927a91106din corpus6
quolu/plaudemain7c18750f39df0ee5591c9fdacca6b9781dfd1890in corpus0
richard7463/askgrokwalletmainbc46298b059352171490390584fd895d92649a48in corpus1
rockyzhuo/grok-bot-blue-bookmainebb28026a630e70be8e3da578cf85d5919ed5e19in corpus0
s-hiraoku/grok-bot-playbookmain306c7a12019b2e5aa6457f9f3607e8ff5692c689in corpus0
shrdgn/grokbot-skillsmainab16e780a80ce74c701022dec726f9174e625f79in corpus74
steve228uk/grok-bot-shoppingmainc0a52b214e594973cf149aff3ad23068ef59c3cein corpus4
swcstudiospace/PumpGrokmaind16963a007b285f1a62687f7fc61c5506583559bin corpus32
tal-giladi/grokbot-field-guidemaincbdb6b1895f25b5adb2767622860ba33e35c32d2in corpus1
thomasbek3/hermes-bot-kitmaster13b446128ee2831d4a1bfa29bfabe0f772ed80c6in corpus1
tiankonglan/awesome-grok-bot-templatemain826c52a67c816c7c1321f761d27219ff639afa99in corpus0
vercel/vercel-pluginmain7b0a6f61b254b0149bb644cadfb588a5c46df0c2in corpus41
zhulin025/LaoA-GrokBotmain527c3b5746bed34da3a6d4f9747e483c84534a41in corpus0
Anil-matcha/awesome-grok-botmaster2412bacefee2cdc31ceb526443ad780a89a2a2cddropped: not the unit of analysis0
aaron-he-zhu/aaron-marketing-skillsmain33dc05b0eeac3f78f4621ff898a1b84c04a65bdadropped: not the unit of analysis0
elie222/botdirectory.aimainbadedc0c985bf3e021634e3d7823ded02cd5545edropped: not the unit of analysis0
RongleCat/awesome-grok-botmaine8af8ee56813e891657e63dafda90b5755ac021ddiscovery only, no charters0
majiayu000/awesome-grok-botmainf7f692c71a6379f3849ad2df5bdf2e310b974268discovery only, no charters0

the eight rules and the publication gate

each rule is a pure function over the normalized english charter text, the same code that runs in your browser on the check page. every rule was checked against 60 charters labelled by hand, blind, before the detector output was read. two gates: gate a is three-way agreement (true / false / unclear), gate b is agreement on true against not-true, both at 0.85. rows: 1 clears gate a, corpus-wide counts publishable. 2 fails a, clears b, only the corpus true count is publishable. 3 fails both but never invents a true, so the corpus true count is a lower bound. 4 fails everything, sample only. only rows 1 to 3 appear on the check page.

rulewhat it asksgate agate bprecision on truerownumber reported
R1 approval gaterequire a human yes before an irreversible action0.5670.8170.8804sample only: 30 of n = 60, 95% interval 0.377 to 0.623
R2 state filekeep a state file across runs0.6330.7330.7864sample only: 24 of n = 60, 95% interval 0.286 to 0.526
R3 silence ruleallow an empty run to send nothing0.8330.9500.9232378 of 1596 (corpus true count only)
R4 ownership boundarystate what the bot does not touch0.7670.7670.7964sample only: 43 of n = 60, 95% interval 0.592 to 0.815
R5 stop conditiondefine when the run is finished0.8170.8170.9324sample only: 49 of n = 60, 95% interval 0.701 to 0.894
R6 undisclosed capabilityname every tool the bot uses in its role statement0.5170.5170.3264sample only: 14 of n = 60, 95% interval 0.144 to 0.354
R7 visible secretcarry no key, token, private key or internal host in the text1.0001.000-10 of 1596 carry a secret shape (frozen count); after the shape fix 0 of 1596, see the note below
R8 injection resistancetreat content the bot reads (pages, email, tickets, pasted text) as data, not orders0.9170.9170.78611302 of 1596 are silent on the question (corpus-wide); 294 of 1596 resistant; exposed is a detector floor, see below

gate values are shown to three places here and unrounded in numbers.json. sample intervals are wilson 95 percent.

two numbers that are easy to misread

secret shapes: 0 of 1596 charters carry one. this corpus is curated public repositories where github's push protection and secret scanning make a live key close to impossible, so the zero says the search was on the wrong surface, not that nobody leaks. nothing is claimed about share links, which this project never reads.

part of that zero is the detector, not only the surface. the shapes the audit ran with required an unbroken alphanumeric tail after the prefix and the text layer they ran on dropped underscores, so keys of the shape sk-ant-api03-..., sk-proj-... and ghp_... were never catchable. on 2026-09-05 the shapes were widened: an api key is now sk- followed by up to 40 characters of letters, digits, hyphens or underscores and then at least 16 alphanumerics, a github token is ghp_, gho_, ghu_, ghs_ or ghr_ plus 20 alphanumerics or github_pat_ plus 20 characters, the slack shape also takes xoxe-, and the text layer keeps underscores inside a token. an email address is no longer counted as a secret: the check page reports it separately as something to look at before sharing. the corpus was re-scanned for this rule only, with every other rule's labels verified byte-identical: 0 of 1596 charters carried a secret shape before, 0 of 1596 after (1 carry an email address). the published numbers are unchanged.

injection: the number reported is the silence, 1302 of 1596 charters say nothing either way about whether content the bot reads can give it orders. the detector found 0 charters of 1596 that tell the bot to obey such content, and 0 of the 60 hand-labelled charters; an earlier hand-labelled sample on the wider corpus found an exposed charter the detector had missed, so a detector zero here is a floor, not a fact.

limits

reproduce

the full pipeline (python, standard library only), the frozen numbers with their sha256 hashes, the blind hand labels, the decision log and the parity report between the browser engine and the python engine exist as a working folder that has not been published at the time of writing, so this page cannot link you to it. what you can check here: the source table above names every repository and commit, so the corpus can be rebuilt from those pins, and rules.js on this page is the exact engine, generated from the python one. the browser engine agreed with the python engine on every one of the 12768 frozen labels.