Package: jinx 0.2.0.9006

RLadies+

jinx: RLadies+ GitHub Organisation Management

GitHub App for managing the RLadies+ organisation. Handles onboarding and offboarding of global team members, chapter onboarding, PR review automation, org-wide reporting, Airtable sync, website automation, chapter monitoring, and interactive issue commands.

Authors:RLadies+ [aut, cre, cph]

jinx_0.2.0.9006.tar.gz
jinx_0.2.0.9006.zip(r-4.7-any)jinx_0.2.0.9006.zip(r-4.6-any)jinx_0.2.0.9006.zip(r-4.5-any)
jinx_0.2.0.9006.tgz(r-4.6-any)jinx_0.2.0.9006.tgz(r-4.5-any)
jinx_0.2.0.9006.tar.gz(r-4.7-any)jinx_0.2.0.9006.tar.gz(r-4.6-any)
jinx_0.2.0.9006.tgz(r-4.6-emscripten)
manual.pdf |manual.html✨
DESCRIPTION |NEWS
card.svg |card.png
jinx/json (API)

# Install 'jinx' in R:
install.packages('jinx', repos = c('https://rladies.r-universe.dev', 'https://cloud.r-project.org'))

Bug tracker:https://github.com/rladies/jinx/issues

Pkgdown/docs site:https://rladies.github.io

On CRAN:

Conda:

4.32 score 1 stars 244 exports 70 dependencies

Last updated from:4c2d1be104 (on main). Checks:9 OK. Indexed: yes.

TargetResultTimeFilesSyslog
linux-develOK172
source / vignettesOK193
linux-releaseOK173
macos-releaseOK127
macos-oldrelOK144
windows-develOK169
windows-releaseOK169
windows-oldrelOK170
wasm-releaseOK139

Exports:airtable_base_allowedairtable_record_updateairtable_webhook_processanalytics_collect_chapter_activityanalytics_collect_contributor_growthanalytics_compute_trendsanalytics_format_markdownanalytics_generate_dashboardannounce_create_messageannounce_postannounce_post_blueskyannounce_post_mastodonannounce_post_replyannounce_send_newsletterblog_add_prblog_check_linksblog_check_links_repoblog_create_entryblog_feed_blocksblog_feed_collectblog_feed_formatblog_feed_itemsblog_feed_new_itemsblog_feed_ogblog_feed_pendingblog_feed_postblog_feed_runblog_feed_sourcescf_ops_format_workers_reportcf_ops_get_kv_valuecf_ops_kv_deletecf_ops_kv_putcf_ops_list_kv_keyscf_ops_list_workers_scriptscf_ops_purge_cachecf_ops_workers_invocationscfp_check_deadlinescfp_create_issuecfp_list_opencfp_recommend_speakerchannel_copy_applychannel_copy_planchannel_copy_proposalschannel_index_loadchannel_promo_buildchannel_promo_formatchannel_promo_postchannel_rename_proposalschapter_check_healthchapter_checklist_tickchapter_confirm_sendchapter_createchapter_create_prchapter_create_setupchapter_create_updatechapter_duplicate_checkchapter_duplicate_commentchapter_duplicate_reportchapter_email_approvalschapter_email_provisionchapter_find_issuechapter_initiated_datechapter_mailbox_createchapter_meetup_briefchapter_meetup_groupschapter_meetup_logo_uploadchapter_meetup_namechapter_meetup_requestchapter_meetup_urlnamechapter_meta_fetchchapter_monitor_statuschapter_onboard_blockerchapter_onboard_statechapter_onboard_summarychapter_onboard_websitechapter_organiser_submissionschapter_remind_stalechapter_repo_auditchapter_repo_audit_reportchapter_repo_createchapter_repo_namechapter_report_healthchapter_slack_promptchapter_slack_sentchapter_status_reconcilechapter_status_reconcile_reportchapter_status_reportchapter_team_auditchapter_team_audit_reportchapter_team_createchapter_team_descriptionchapter_team_namechapter_team_slugchapter_validate_fileschapter_validate_reportchunk_markdowncloudflare_account_idcloudflare_embedcloudflare_generatecloudflare_vectorize_upsertcmd_attach_slack_contextcmd_authorizecmd_executecmd_parseconference_generate_reportconference_list_speakerscontributor_formatcontributor_listcontributor_list_orgcontributor_updatecopilot_request_reviewcopilot_review_prcopilot_sync_repodirectory_crop_imagedirectory_mark_synceddirectory_optimize_imagedirectory_purge_submissionsdirectory_sync_airtabledirectory_validate_filenamedirectory_verify_handlesevent_authorizeevent_create_summaryevent_executeevent_list_chapterevent_parseevent_sync_chaptersgather_rag_sourcegh_branch_upsertgh_greet_contributorgh_open_or_update_prgh_post_checklistgh_thank_contributorgh_thank_issue_contributorsgh_welcome_contributorgha_generate_dashboardgt_check_invitationsgt_create_offboardinggt_finalize_offboardinggt_finalize_onboardinggt_invitegt_remind_stalegt_schedule_onboarding_meetingguide_email_templateguide_templatei18n_check_coveragei18n_get_chapter_languagei18n_list_languagesi18n_translate_templatei18n_validate_translationsli_get_versionli_media_uploadli_oauthli_post_writeli_reqli_urn_meload_copilot_review_configload_labels_configload_rag_sourcesload_review_rulesload_teams_configmail_sendmeeting_poll_bestmeeting_poll_createmeeting_poll_format_bestmeeting_poll_format_createdmeeting_poll_getmeeting_poll_icsmeeting_poll_lockmeetup_urlname_statuspending_link_consumeprepare_inactivity_emailspromo_blurbpromo_eligible_channelspromo_pick_channelquestion_coding_declined_countquestion_content_gapsquestion_digest_buildquestion_digest_formatquestion_digest_postquestion_downvoted_rankquestion_draft_guide_snippetquestion_feedback_formatquestion_feedback_summaryquestion_gaps_rankquestion_log_formatquestion_log_purgequestion_log_queryquestion_vote_applyr_challenge_adversarial_checkr_challenge_allowed_packagesr_challenge_difficultiesr_challenge_difficulty_badger_challenge_difficulty_labelr_challenge_draft_buildr_challenge_draft_postr_challenge_format_issuer_challenge_format_slackr_challenge_generater_challenge_issue_titler_challenge_open_issuer_challenge_parser_challenge_render_statementr_challenge_reprex_checkrag_chunk_idrag_index_buildrandom_emojireaction_directionreaction_event_applyreaction_log_incrementreport_format_markdownreport_generatereview_check_pr_namingreview_runrum_collect_analyticsrum_format_analyticsrum_generate_reportsetup_channel_processshort_urlslack_api_callslack_bot_tokenslack_channel_id_lookupslack_channel_indexslack_channel_mentionslack_conversations_openslack_interaction_processslack_invite_approval_checklist_blocksslack_invite_batchslack_invite_requestslack_invite_request_blocksslack_post_messageslack_response_url_postslack_subscribe_rssslack_workspace_for_teamtags2hashvalidate_blog_entryvalidate_directory_entriesvalidate_directory_prwebsite_collect_analyticswebsite_format_analyticswebsite_generate_reportwebsite_merge_pendingwebsite_publish_reportwelcome_message_renderwelcome_send

Dependencies:askpassbase64encbskyrbslibcachemclicliprcloudflarercountrycodecpp11curldata.tabledigestdplyrevaluatefastmapfontawesomefsgenericsgitcredsgluehighrhtmltoolshttrhttr2inijquerylibjsonlitejsonvalidateknitrlifecyclelubridatemagickmagrittrmeetuprmemoisemimeopengraphopensslpillarpkgconfigpurrrR6rappdirsRcpprlangrlistrmarkdownrstudioapirtootrvestS7sassselectrstringistringrsystibbletidyrtidyselecttimechangetinytexutf8V8vctrswithrxfunXMLxml2yaml

Getting started with Jinx
Where you'll find Jinx | In Slack | In a GitHub comment | What Jinx is doing under the hood | When something goes wrong | Where to go next

Last update: 2026-07-18
Started: 2026-05-13

Operating Jinx
Register the GitHub App | Wire up secrets | Configuration files | Adding a new command | Opt another repo into PR review | Copilot reviews (grimoire gates) | The bot image | The RAG index | The Cloudflare Worker | When things break | Where to go next

Last update: 2026-07-18
Started: 2026-03-07

The Jinx Slack app
Install the app | What Jinx does | Slash commands | Copilot content reviews | Ask Jinx anything about RLadies+ | Approving Slack invites | Permissions and data | Troubleshooting | Source and feedback

Last update: 2026-07-18
Started: 2026-05-12

Readme and manuals

Help Manual

Help pageTopics
Check whether an Airtable base is within the configured token's scopeairtable_base_allowed
Update fields on an Airtable recordairtable_record_update
Process an Airtable invite-request webhookairtable_webhook_process
Collect chapter activity dataanalytics_collect_chapter_activity
Collect contributor growth dataanalytics_collect_contributor_growth
Compute activity trendsanalytics_compute_trends
Format analytics as markdownanalytics_format_markdown
Generate analytics dashboardanalytics_generate_dashboard
Create a formatted announcement messageannounce_create_message
Announce a blog post across multiple platformsannounce_post
Post an announcement to Blueskyannounce_post_bluesky
Post an announcement to Mastodonannounce_post_mastodon
Post a reply comment on an issue or PRannounce_post_reply
Send a newsletter via ConvertKitannounce_send_newsletter
Add a community blog entry via a pull requestblog_add_pr
Check blog URLs and RSS feeds for broken linksblog_check_links
Check community blog links from the awesome-rladies-creations repoblog_check_links_repo
Auto-generate a blog entry JSON file from a URLblog_create_entry
Build a new post as Slack blocksblog_feed_blocks
Collect every recent post across the curated feedsblog_feed_collect
Format one new post as a Slack mrkdwn messageblog_feed_format
Parse an RSS or Atom document into a data frame of itemsblog_feed_items
Keep the items worth announcingblog_feed_new_items
Read a post's Open Graph preview datablog_feed_og
Keep the posts one workspace still owes its channelblog_feed_pending
Announce new community posts in one workspace's blog channelblog_feed_post
Serve every workspace's blog channel from one poll of the feedsblog_feed_run
Split curated entries into pollable sources and gapsblog_feed_sources
Format Workers invocation metrics as a markdown tablecf_ops_format_workers_report
Read a single value from a Cloudflare KV namespacecf_ops_get_kv_value
Delete a single value from a Cloudflare KV namespacecf_ops_kv_delete
Write a single value to a Cloudflare KV namespacecf_ops_kv_put
List keys in a Cloudflare KV namespacecf_ops_list_kv_keys
List Workers scripts deployed on the accountcf_ops_list_workers_scripts
Purge specific URLs or prefixes from the Cloudflare cachecf_ops_purge_cache
Query Workers invocation/error/CPU metricscf_ops_workers_invocations
Check CFP deadlines and post reminderscfp_check_deadlines
Create a CFP tracking issuecfp_create_issue
List open CFPs tracked as GitHub issuescfp_list_open
Recommend a speaker for a conferencecfp_recommend_speaker
Apply a channel copy planchannel_copy_apply
Plan the channel copy and rename pass for a workspacechannel_copy_plan
Read the reviewed channel copy proposalschannel_copy_proposals
Load (and cache) a workspace's full channel name-to-id indexchannel_index_load
Build the weekly channel-spotlight messagechannel_promo_build
Format a channel spotlight as a Slack mrkdwn messagechannel_promo_format
Build and post the weekly channel spotlight to the community workspacechannel_promo_post
Read the reviewed channel rename proposalschannel_rename_proposals
Check chapter health across the organizationchapter_check_health
Tick a checklist item on an onboarding issuechapter_checklist_tick
Confirm a completed onboarding to the chapter organiserschapter_confirm_send
Create a new chapter JSON filechapter_create
Create a chapter JSON PR on the website repochapter_create_pr
Create a new chapter setup issuechapter_create_setup
Create a chapter update issuechapter_create_update
Check whether a requested chapter already exists or has neighbourschapter_duplicate_check
Post the duplicate check onto an onboarding issuechapter_duplicate_comment
Render a duplicate check as an onboarding issue commentchapter_duplicate_report
Find the approvals on a chapter onboarding issuechapter_email_approvals
Provision a chapter mailbox once a human has approved itchapter_email_provision
Find the open onboarding issue for a chapterchapter_find_issue
When a chapter first appeared in the website repositorychapter_initiated_date
Create a chapter mailbox in Google Workspacechapter_mailbox_create
Render the Meetup setup brief for a chapterchapter_meetup_brief
Chapters that have a Meetup group, read from the website datachapter_meetup_groups
Set a chapter's Meetup group photo to the RLadies+ logochapter_meetup_logo_upload
The Meetup group name for a chapterchapter_meetup_name
Post the Meetup setup brief on an onboarding issuechapter_meetup_request
The Meetup URL name for a chapterchapter_meetup_urlname
Read the machine-readable block off an onboarding issuechapter_meta_fetch
Monitor chapter activity statuschapter_monitor_status
Which team is holding a chapter onboarding upchapter_onboard_blocker
Read the checklist state of a chapter onboarding issuechapter_onboard_state
Summarise an onboarding checklist as markdownchapter_onboard_summary
Add a prospective chapter to the website from its onboarding issuechapter_onboard_website
Find organiser form submissions for a chapterchapter_organiser_submissions
Nudge the team holding up a stale chapter onboardingchapter_remind_stale
Audit the GitHub references in chapter datachapter_repo_audit
Render a chapter GitHub audit as markdownchapter_repo_audit_report
Create a chapter's presentations repositorychapter_repo_create
The presentations repository name for a chapterchapter_repo_name
Generate a chapter health reportchapter_report_health
Prompt the onboarding issue for the organiser Slack invitechapter_slack_prompt
Record that the organisers Slack invite was sentchapter_slack_sent
Reconcile stored chapter status against actual Meetup activitychapter_status_reconcile
Render a status reconciliation as markdownchapter_status_reconcile_report
Report the state of a chapter onboardingchapter_status_report
Compare the chapter teams against the website chapter datachapter_team_audit
Render a team audit as markdownchapter_team_audit_report
Create a chapter's GitHub teamchapter_team_create
The chapter description shown on the teamchapter_team_description
The display name for a chapter's GitHub teamchapter_team_name
The GitHub team slug for a chapterchapter_team_slug
Validate website chapter data fileschapter_validate_files
Render chapter validation issues as markdownchapter_validate_report
Chunk markdown into retrieval-sized pieceschunk_markdown
Discover the Cloudflare account ID for a tokencloudflare_account_id
Embed texts with a Cloudflare Workers AI modelcloudflare_embed
Generate chat-completion text with a Cloudflare Workers AI modelcloudflare_generate
Upsert vectors into a Cloudflare Vectorize indexcloudflare_vectorize_upsert
Attach Slack context fields to a parsed commandcmd_attach_slack_context
Authorize a parsed command before executioncmd_authorize
Execute a parsed jinx commandcmd_execute
Parse a jinx command from an issue commentcmd_parse
Generate conference coordination reportconference_generate_report
List speaker recommendations for a conferenceconference_list_speakers
Generate a contributors markdown sectioncontributor_format
List contributors for a repositorycontributor_list
Collect contributors across multiple reposcontributor_list_org
Generate and update a contributors list for a repocontributor_update
Request GitHub Copilot as a reviewer on a pull requestcopilot_request_review
Summon a GitHub Copilot review on a pull requestcopilot_review_pr
Sync grimoire review skills into a repo as Copilot instructionscopilot_sync_repo
Crop and resize a directory profile imagedirectory_crop_image
Flag handled submissions as synced.directory_mark_synced
Optimize an image for web displaydirectory_optimize_image
Erase every Airtable submission for the given directory slugs.directory_purge_submissions
Sync directory entries from Airtabledirectory_sync_airtable
Validate a directory entry filenamedirectory_validate_filename
Verify that social media handles existdirectory_verify_handles
Authorize a parsed event before executionevent_authorize
Create a formatted event summaryevent_create_summary
Execute a parsed, authorized eventevent_execute
List events for a chapterevent_list_chapter
Parse a 'slack-event' dispatch payloadevent_parse
Sync events across all chaptersevent_sync_chapters
Dispatch a source spec to the appropriate gather functiongather_rag_source
Create or reset a branch to match a base refgh_branch_upsert
Greet a new PR authorgh_greet_contributor
Open a PR, or return the existing open PR for a branchgh_open_or_update_pr
Post a content review checklist on a PRgh_post_checklist
Thank everyone who contributed to a merged PRgh_thank_contributor
Thank everyone who took part in a closed issuegh_thank_issue_contributors
Welcome a contributor on a new PR or issuegh_welcome_contributor
Generate GitHub Actions dashboard datagha_generate_dashboard
Check pending global team invitationsgt_check_invitations
Create a global team offboarding issuegt_create_offboarding
Finalize global team offboarding by removing user from teamsgt_finalize_offboarding
Finalize global team onboarding for an accepted membergt_finalize_onboarding
Invite a user to the RLadies+ global teamgt_invite
Send reminders on stale global team onboarding/offboarding issuesgt_remind_stale
Open the onboarding meeting poll and post it to the onboarding issuegt_schedule_onboarding_meeting
Fetch a canonical email template from the guideguide_email_template
Fetch a canonical communications template from the guideguide_template
Check translation coverage across languagesi18n_check_coverage
Get a chapter's preferred languagei18n_get_chapter_language
List supported languagesi18n_list_languages
Translate a template with language fallbacki18n_translate_template
Validate translations for placeholder consistencyi18n_validate_translations
Get LinkedIn API version stringli_get_version
Upload media to LinkedInli_media_upload
Perform LinkedIn OAuth authenticationli_oauth
Post to LinkedInli_post_write
Create a base LinkedIn API requestli_req
Get the LinkedIn URN for the authenticated userli_urn_me
Load the Copilot review bridge configurationload_copilot_review_config
Load file-path to label mappingsload_labels_config
Load the configured RAG source listload_rag_sources
Load PR review rulesload_review_rules
Load teams configurationload_teams_config
Send an email as jinxmail_send
Get the ranked best slots for a pollmeeting_poll_best
Create a meeting-scheduling poll on samkomameeting_poll_create
Format ranked best slots as markdownmeeting_poll_format_best
Format a created poll as a markdown announcementmeeting_poll_format_created
Fetch a poll and its aggregated responsesmeeting_poll_get
Export the locked slot of a poll as an iCalendar (.ics) stringmeeting_poll_ics
Lock in (or clear) the chosen slot for a pollmeeting_poll_lock
Whether a Meetup urlname looks takenmeetup_urlname_status
Consume a pending chapter sign-up link for a newly joined emailpending_link_consume
Prepare the guide's first inactivity notice for inactive chaptersprepare_inactivity_emails
Draft a spotlight invitation for a channel in Jinx's voicepromo_blurb
Select the community public channels eligible for promotionpromo_eligible_channels
Pick the next channel to spotlight, round-robinpromo_pick_channel
Count coding questions Jinx declinedquestion_coding_declined_count
Rank content gaps for the weekly digestquestion_content_gaps
Build the weekly question-gap digest textquestion_digest_build
Format the weekly question-gap digest as Slack mrkdwnquestion_digest_format
Build and post the weekly question-gap digest to Slackquestion_digest_post
Rank questions where downvotes exceed upvotesquestion_downvoted_rank
Draft a proposed Guide answer for a content-gap questionquestion_draft_guide_snippet
Format a reaction-feedback summary as a replyquestion_feedback_format
Summarize reaction-feedback tallies for a Slack workspacequestion_feedback_summary
Rank content-gap questions by normalized-duplicate countquestion_gaps_rank
Format a question-log report as markdownquestion_log_format
Purge question-log rows past the retention windowquestion_log_purge
Query the anonymous question logquestion_log_query
Apply a reaction vote to the question it answeredquestion_vote_apply
Adversarially review a candidate challenger_challenge_adversarial_check
Packages a generated challenge may rely onr_challenge_allowed_packages
Difficulty levels for the weekly R challenger_challenge_difficulties
Slack emoji badge for a difficulty levelr_challenge_difficulty_badge
Human-readable label for a difficulty levelr_challenge_difficulty_label
Draft a fully verified weekly R challenger_challenge_draft_build
Draft, verify, and propose a weekly R challenger_challenge_draft_post
Format a drafted challenge as a GitHub review issuer_challenge_format_issue
Format a challenge as a Slack messager_challenge_format_slack
Ask Workers AI to draft a weekly R challenger_challenge_generate
GitHub issue title for a drafted challenger_challenge_issue_title
Open a proposed challenge issue in the review repor_challenge_open_issue
Parse a model completion into a structured challenger_challenge_parse
Render a challenge statement as a reprexr_challenge_render_statement
Verify a reference solution against its own testsr_challenge_reprex_check
Stable vector ID for a chunkrag_chunk_id
Build the Jinx RAG indexrag_index_build
Select a random emojirandom_emoji
Classify a Slack reaction as an up- or down-votereaction_direction
Apply an incoming Slack reaction eventreaction_event_apply
Increment the daily reaction-feedback counter for a workspacereaction_log_increment
Format a report as markdownreport_format_markdown
Generate an organization activity reportreport_generate
Check file naming conventions in a PRreview_check_pr_naming
Run all PR review automationreview_run
Collect Cloudflare RUM (Web Analytics) traffic datarum_collect_analytics
Format Cloudflare RUM analytics as markdownrum_format_analytics
Generate a Cloudflare RUM analytics reportrum_generate_report
Set up a Slack channel with RLadies+ bookmarkssetup_channel_process
Shorten a URL using the Short.io APIshort_url
Generic low-level Slack API caller shared by the event/command handlers that need more than 'slack_post_message()''s single 'chat.postMessage' call - DM opening, channel lookup, bookmarks, and so on. Retries on a 429 or 5xx response, honouring the 'Retry-After' header up to 60s. Slack's 'Retry-After' for a Tier 2 method is routinely 30-60s, so a shorter cap guarantees failure under sustained rate limiting - which a bulk pass over a workspace's channels hits readily.slack_api_call
Resolve the bot token for a jinx-operated Slack workspaceslack_bot_token
Look up a Slack channel's ID by nameslack_channel_id_lookup
Index a workspace's public channelsslack_channel_index
Resolve a channel name to a Slack <#id|name> mentionslack_channel_mention
Open a Slack direct message channelslack_conversations_open
Process a Slack interaction from the invite-approval flowslack_interaction_process
Build the post-approval checklist Block Kit cardslack_invite_approval_checklist_blocks
Send pending Slack invitationsslack_invite_batch
Request a Slack invitation for someone not yet on the workspaceslack_invite_request
Build the initial Slack invite-request Block Kit cardslack_invite_request_blocks
Post a message to a Slack channelslack_post_message
Reply to a Slack interaction via its 'response_url'slack_response_url_post
Post a request to subscribe an RSS feed to a Slack channelslack_subscribe_rss
Map a Slack team id to its workspace nameslack_workspace_for_team
Convert tags to hashtag stringtags2hash
Validate blog entry JSON files against schemavalidate_blog_entry
Validate directory entry JSON files against schemavalidate_directory_entries
Post an automated directory review as a PR checklist commentvalidate_directory_pr
Collect website analytics from Cloudflare Web Analyticswebsite_collect_analytics
Format website analytics as markdownwebsite_format_analytics
Generate a website analytics reportwebsite_generate_report
Auto-merge PRs with pending label when date matcheswebsite_merge_pending
Publish website analytics as a GitHub issuewebsite_publish_report
Render a welcome DM for a newly joined Slack memberwelcome_message_render
Send a welcome DM to a newly joined Slack memberwelcome_send