| Check whether an Airtable base is within the configured token's scope | airtable_base_allowed |
| Update fields on an Airtable record | airtable_record_update |
| Process an Airtable invite-request webhook | airtable_webhook_process |
| Collect chapter activity data | analytics_collect_chapter_activity |
| Collect contributor growth data | analytics_collect_contributor_growth |
| Compute activity trends | analytics_compute_trends |
| Format analytics as markdown | analytics_format_markdown |
| Generate analytics dashboard | analytics_generate_dashboard |
| Create a formatted announcement message | announce_create_message |
| Announce a blog post across multiple platforms | announce_post |
| Post an announcement to Bluesky | announce_post_bluesky |
| Post an announcement to Mastodon | announce_post_mastodon |
| Post a reply comment on an issue or PR | announce_post_reply |
| Send a newsletter via ConvertKit | announce_send_newsletter |
| Add a community blog entry via a pull request | blog_add_pr |
| Check blog URLs and RSS feeds for broken links | blog_check_links |
| Check community blog links from the awesome-rladies-creations repo | blog_check_links_repo |
| Auto-generate a blog entry JSON file from a URL | blog_create_entry |
| Build a new post as Slack blocks | blog_feed_blocks |
| Collect every recent post across the curated feeds | blog_feed_collect |
| Format one new post as a Slack mrkdwn message | blog_feed_format |
| Parse an RSS or Atom document into a data frame of items | blog_feed_items |
| Keep the items worth announcing | blog_feed_new_items |
| Read a post's Open Graph preview data | blog_feed_og |
| Keep the posts one workspace still owes its channel | blog_feed_pending |
| Announce new community posts in one workspace's blog channel | blog_feed_post |
| Serve every workspace's blog channel from one poll of the feeds | blog_feed_run |
| Split curated entries into pollable sources and gaps | blog_feed_sources |
| Format Workers invocation metrics as a markdown table | cf_ops_format_workers_report |
| Read a single value from a Cloudflare KV namespace | cf_ops_get_kv_value |
| Delete a single value from a Cloudflare KV namespace | cf_ops_kv_delete |
| Write a single value to a Cloudflare KV namespace | cf_ops_kv_put |
| List keys in a Cloudflare KV namespace | cf_ops_list_kv_keys |
| List Workers scripts deployed on the account | cf_ops_list_workers_scripts |
| Purge specific URLs or prefixes from the Cloudflare cache | cf_ops_purge_cache |
| Query Workers invocation/error/CPU metrics | cf_ops_workers_invocations |
| Check CFP deadlines and post reminders | cfp_check_deadlines |
| Create a CFP tracking issue | cfp_create_issue |
| List open CFPs tracked as GitHub issues | cfp_list_open |
| Recommend a speaker for a conference | cfp_recommend_speaker |
| Apply a channel copy plan | channel_copy_apply |
| Plan the channel copy and rename pass for a workspace | channel_copy_plan |
| Read the reviewed channel copy proposals | channel_copy_proposals |
| Load (and cache) a workspace's full channel name-to-id index | channel_index_load |
| Build the weekly channel-spotlight message | channel_promo_build |
| Format a channel spotlight as a Slack mrkdwn message | channel_promo_format |
| Build and post the weekly channel spotlight to the community workspace | channel_promo_post |
| Read the reviewed channel rename proposals | channel_rename_proposals |
| Check chapter health across the organization | chapter_check_health |
| Tick a checklist item on an onboarding issue | chapter_checklist_tick |
| Confirm a completed onboarding to the chapter organisers | chapter_confirm_send |
| Create a new chapter JSON file | chapter_create |
| Create a chapter JSON PR on the website repo | chapter_create_pr |
| Create a new chapter setup issue | chapter_create_setup |
| Create a chapter update issue | chapter_create_update |
| Check whether a requested chapter already exists or has neighbours | chapter_duplicate_check |
| Post the duplicate check onto an onboarding issue | chapter_duplicate_comment |
| Render a duplicate check as an onboarding issue comment | chapter_duplicate_report |
| Find the approvals on a chapter onboarding issue | chapter_email_approvals |
| Provision a chapter mailbox once a human has approved it | chapter_email_provision |
| Find the open onboarding issue for a chapter | chapter_find_issue |
| When a chapter first appeared in the website repository | chapter_initiated_date |
| Create a chapter mailbox in Google Workspace | chapter_mailbox_create |
| Render the Meetup setup brief for a chapter | chapter_meetup_brief |
| Chapters that have a Meetup group, read from the website data | chapter_meetup_groups |
| Set a chapter's Meetup group photo to the RLadies+ logo | chapter_meetup_logo_upload |
| The Meetup group name for a chapter | chapter_meetup_name |
| Post the Meetup setup brief on an onboarding issue | chapter_meetup_request |
| The Meetup URL name for a chapter | chapter_meetup_urlname |
| Read the machine-readable block off an onboarding issue | chapter_meta_fetch |
| Monitor chapter activity status | chapter_monitor_status |
| Which team is holding a chapter onboarding up | chapter_onboard_blocker |
| Read the checklist state of a chapter onboarding issue | chapter_onboard_state |
| Summarise an onboarding checklist as markdown | chapter_onboard_summary |
| Add a prospective chapter to the website from its onboarding issue | chapter_onboard_website |
| Find organiser form submissions for a chapter | chapter_organiser_submissions |
| Nudge the team holding up a stale chapter onboarding | chapter_remind_stale |
| Audit the GitHub references in chapter data | chapter_repo_audit |
| Render a chapter GitHub audit as markdown | chapter_repo_audit_report |
| Create a chapter's presentations repository | chapter_repo_create |
| The presentations repository name for a chapter | chapter_repo_name |
| Generate a chapter health report | chapter_report_health |
| Prompt the onboarding issue for the organiser Slack invite | chapter_slack_prompt |
| Record that the organisers Slack invite was sent | chapter_slack_sent |
| Reconcile stored chapter status against actual Meetup activity | chapter_status_reconcile |
| Render a status reconciliation as markdown | chapter_status_reconcile_report |
| Report the state of a chapter onboarding | chapter_status_report |
| Compare the chapter teams against the website chapter data | chapter_team_audit |
| Render a team audit as markdown | chapter_team_audit_report |
| Create a chapter's GitHub team | chapter_team_create |
| The chapter description shown on the team | chapter_team_description |
| The display name for a chapter's GitHub team | chapter_team_name |
| The GitHub team slug for a chapter | chapter_team_slug |
| Validate website chapter data files | chapter_validate_files |
| Render chapter validation issues as markdown | chapter_validate_report |
| Chunk markdown into retrieval-sized pieces | chunk_markdown |
| Discover the Cloudflare account ID for a token | cloudflare_account_id |
| Embed texts with a Cloudflare Workers AI model | cloudflare_embed |
| Generate chat-completion text with a Cloudflare Workers AI model | cloudflare_generate |
| Upsert vectors into a Cloudflare Vectorize index | cloudflare_vectorize_upsert |
| Attach Slack context fields to a parsed command | cmd_attach_slack_context |
| Authorize a parsed command before execution | cmd_authorize |
| Execute a parsed jinx command | cmd_execute |
| Parse a jinx command from an issue comment | cmd_parse |
| Generate conference coordination report | conference_generate_report |
| List speaker recommendations for a conference | conference_list_speakers |
| Generate a contributors markdown section | contributor_format |
| List contributors for a repository | contributor_list |
| Collect contributors across multiple repos | contributor_list_org |
| Generate and update a contributors list for a repo | contributor_update |
| Request GitHub Copilot as a reviewer on a pull request | copilot_request_review |
| Summon a GitHub Copilot review on a pull request | copilot_review_pr |
| Sync grimoire review skills into a repo as Copilot instructions | copilot_sync_repo |
| Crop and resize a directory profile image | directory_crop_image |
| Flag handled submissions as synced. | directory_mark_synced |
| Optimize an image for web display | directory_optimize_image |
| Erase every Airtable submission for the given directory slugs. | directory_purge_submissions |
| Sync directory entries from Airtable | directory_sync_airtable |
| Validate a directory entry filename | directory_validate_filename |
| Verify that social media handles exist | directory_verify_handles |
| Authorize a parsed event before execution | event_authorize |
| Create a formatted event summary | event_create_summary |
| Execute a parsed, authorized event | event_execute |
| List events for a chapter | event_list_chapter |
| Parse a 'slack-event' dispatch payload | event_parse |
| Sync events across all chapters | event_sync_chapters |
| Dispatch a source spec to the appropriate gather function | gather_rag_source |
| Create or reset a branch to match a base ref | gh_branch_upsert |
| Greet a new PR author | gh_greet_contributor |
| Open a PR, or return the existing open PR for a branch | gh_open_or_update_pr |
| Post a content review checklist on a PR | gh_post_checklist |
| Thank everyone who contributed to a merged PR | gh_thank_contributor |
| Thank everyone who took part in a closed issue | gh_thank_issue_contributors |
| Welcome a contributor on a new PR or issue | gh_welcome_contributor |
| Generate GitHub Actions dashboard data | gha_generate_dashboard |
| Check pending global team invitations | gt_check_invitations |
| Create a global team offboarding issue | gt_create_offboarding |
| Finalize global team offboarding by removing user from teams | gt_finalize_offboarding |
| Finalize global team onboarding for an accepted member | gt_finalize_onboarding |
| Invite a user to the RLadies+ global team | gt_invite |
| Send reminders on stale global team onboarding/offboarding issues | gt_remind_stale |
| Open the onboarding meeting poll and post it to the onboarding issue | gt_schedule_onboarding_meeting |
| Fetch a canonical email template from the guide | guide_email_template |
| Fetch a canonical communications template from the guide | guide_template |
| Check translation coverage across languages | i18n_check_coverage |
| Get a chapter's preferred language | i18n_get_chapter_language |
| List supported languages | i18n_list_languages |
| Translate a template with language fallback | i18n_translate_template |
| Validate translations for placeholder consistency | i18n_validate_translations |
| Get LinkedIn API version string | li_get_version |
| Upload media to LinkedIn | li_media_upload |
| Perform LinkedIn OAuth authentication | li_oauth |
| Post to LinkedIn | li_post_write |
| Create a base LinkedIn API request | li_req |
| Get the LinkedIn URN for the authenticated user | li_urn_me |
| Load the Copilot review bridge configuration | load_copilot_review_config |
| Load file-path to label mappings | load_labels_config |
| Load the configured RAG source list | load_rag_sources |
| Load PR review rules | load_review_rules |
| Load teams configuration | load_teams_config |
| Send an email as jinx | mail_send |
| Get the ranked best slots for a poll | meeting_poll_best |
| Create a meeting-scheduling poll on samkoma | meeting_poll_create |
| Format ranked best slots as markdown | meeting_poll_format_best |
| Format a created poll as a markdown announcement | meeting_poll_format_created |
| Fetch a poll and its aggregated responses | meeting_poll_get |
| Export the locked slot of a poll as an iCalendar (.ics) string | meeting_poll_ics |
| Lock in (or clear) the chosen slot for a poll | meeting_poll_lock |
| Whether a Meetup urlname looks taken | meetup_urlname_status |
| Consume a pending chapter sign-up link for a newly joined email | pending_link_consume |
| Prepare the guide's first inactivity notice for inactive chapters | prepare_inactivity_emails |
| Draft a spotlight invitation for a channel in Jinx's voice | promo_blurb |
| Select the community public channels eligible for promotion | promo_eligible_channels |
| Pick the next channel to spotlight, round-robin | promo_pick_channel |
| Count coding questions Jinx declined | question_coding_declined_count |
| Rank content gaps for the weekly digest | question_content_gaps |
| Build the weekly question-gap digest text | question_digest_build |
| Format the weekly question-gap digest as Slack mrkdwn | question_digest_format |
| Build and post the weekly question-gap digest to Slack | question_digest_post |
| Rank questions where downvotes exceed upvotes | question_downvoted_rank |
| Draft a proposed Guide answer for a content-gap question | question_draft_guide_snippet |
| Format a reaction-feedback summary as a reply | question_feedback_format |
| Summarize reaction-feedback tallies for a Slack workspace | question_feedback_summary |
| Rank content-gap questions by normalized-duplicate count | question_gaps_rank |
| Format a question-log report as markdown | question_log_format |
| Purge question-log rows past the retention window | question_log_purge |
| Query the anonymous question log | question_log_query |
| Apply a reaction vote to the question it answered | question_vote_apply |
| Adversarially review a candidate challenge | r_challenge_adversarial_check |
| Packages a generated challenge may rely on | r_challenge_allowed_packages |
| Difficulty levels for the weekly R challenge | r_challenge_difficulties |
| Slack emoji badge for a difficulty level | r_challenge_difficulty_badge |
| Human-readable label for a difficulty level | r_challenge_difficulty_label |
| Draft a fully verified weekly R challenge | r_challenge_draft_build |
| Draft, verify, and propose a weekly R challenge | r_challenge_draft_post |
| Format a drafted challenge as a GitHub review issue | r_challenge_format_issue |
| Format a challenge as a Slack message | r_challenge_format_slack |
| Ask Workers AI to draft a weekly R challenge | r_challenge_generate |
| GitHub issue title for a drafted challenge | r_challenge_issue_title |
| Open a proposed challenge issue in the review repo | r_challenge_open_issue |
| Parse a model completion into a structured challenge | r_challenge_parse |
| Render a challenge statement as a reprex | r_challenge_render_statement |
| Verify a reference solution against its own tests | r_challenge_reprex_check |
| Stable vector ID for a chunk | rag_chunk_id |
| Build the Jinx RAG index | rag_index_build |
| Select a random emoji | random_emoji |
| Classify a Slack reaction as an up- or down-vote | reaction_direction |
| Apply an incoming Slack reaction event | reaction_event_apply |
| Increment the daily reaction-feedback counter for a workspace | reaction_log_increment |
| Format a report as markdown | report_format_markdown |
| Generate an organization activity report | report_generate |
| Check file naming conventions in a PR | review_check_pr_naming |
| Run all PR review automation | review_run |
| Collect Cloudflare RUM (Web Analytics) traffic data | rum_collect_analytics |
| Format Cloudflare RUM analytics as markdown | rum_format_analytics |
| Generate a Cloudflare RUM analytics report | rum_generate_report |
| Set up a Slack channel with RLadies+ bookmarks | setup_channel_process |
| Shorten a URL using the Short.io API | short_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 workspace | slack_bot_token |
| Look up a Slack channel's ID by name | slack_channel_id_lookup |
| Index a workspace's public channels | slack_channel_index |
| Resolve a channel name to a Slack <#id|name> mention | slack_channel_mention |
| Open a Slack direct message channel | slack_conversations_open |
| Process a Slack interaction from the invite-approval flow | slack_interaction_process |
| Build the post-approval checklist Block Kit card | slack_invite_approval_checklist_blocks |
| Send pending Slack invitations | slack_invite_batch |
| Request a Slack invitation for someone not yet on the workspace | slack_invite_request |
| Build the initial Slack invite-request Block Kit card | slack_invite_request_blocks |
| Post a message to a Slack channel | slack_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 channel | slack_subscribe_rss |
| Map a Slack team id to its workspace name | slack_workspace_for_team |
| Convert tags to hashtag string | tags2hash |
| Validate blog entry JSON files against schema | validate_blog_entry |
| Validate directory entry JSON files against schema | validate_directory_entries |
| Post an automated directory review as a PR checklist comment | validate_directory_pr |
| Collect website analytics from Cloudflare Web Analytics | website_collect_analytics |
| Format website analytics as markdown | website_format_analytics |
| Generate a website analytics report | website_generate_report |
| Auto-merge PRs with pending label when date matches | website_merge_pending |
| Publish website analytics as a GitHub issue | website_publish_report |
| Render a welcome DM for a newly joined Slack member | welcome_message_render |
| Send a welcome DM to a newly joined Slack member | welcome_send |