{
  "_id": "6ac25579d743750d376d7fdb",
  "Package": "jinx",
  "Title": "RLadies+ GitHub Organisation Management",
  "Version": "0.2.0.9006",
  "Authors@R": "person(\"RLadies+\", email = \"info@rladies.org\", role = c(\"aut\", \"cre\", \"cph\"),\ncomment = c(ROR = \"https://ror.org/05wpb1k41\"))",
  "Description": "GitHub App for managing the RLadies+ organisation. Handles\nonboarding and offboarding of global team members, chapter\nonboarding, PR review automation, org-wide reporting, Airtable\nsync, website automation, chapter monitoring, and interactive\nissue commands.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/rladies/jinx, https://rladies.github.io/jinx/",
  "BugReports": "https://github.com/rladies/jinx/issues",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "Config/Needs/website": "rladies/cloak, rprojroot",
  "Remotes": [
    "drmowinckels/cloudflarer"
  ],
  "Config/roxygen2/version": "8.1.0",
  "Config/pak/sysreqs": "cmake git make libmagick++-dev gsfonts libicu-dev\nlibuv1-dev libxml2-dev libssl-dev libnode-dev libx11-dev",
  "Repository": "https://rladies.r-universe.dev",
  "Date/Publication": "2026-10-04 10:11:51 UTC",
  "RemoteUrl": "https://github.com/rladies/jinx",
  "RemoteRef": "main",
  "RemoteSha": "4c2d1be1048286e7184633e16113b1a037557d5f",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-04 13:26:26 UTC",
    "User": "root"
  },
  "Author": "RLadies+ [aut, cre, cph] (ROR: <https://ror.org/05wpb1k41>)",
  "Maintainer": "RLadies+ <info@rladies.org>",
  "_user": "rladies",
  "_type": "src",
  "_file": "jinx_0.2.0.9006.tar.gz",
  "_fileid": "https://r2.ropensci.org/e8a290f85b406b83e84ce6b80b493196b03181d909a59fae8255cd61f0564fa8",
  "_filesize": 1244409,
  "_sha256": "e8a290f85b406b83e84ce6b80b493196b03181d909a59fae8255cd61f0564fa8",
  "_expires": "2027-01-12T13:32:39.000Z",
  "_created": "2026-10-04T13:26:26.000Z",
  "_published": "2026-10-04T13:32:41.667Z",
  "_jobs": [
    {
      "job": 111446159296,
      "time": 172,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11303964098"
    },
    {
      "job": 111446159280,
      "time": 173,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11304278926"
    },
    {
      "job": 111446159344,
      "time": 144,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11304453866"
    },
    {
      "job": 111446159328,
      "time": 127,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11304119785"
    },
    {
      "job": 111445601589,
      "time": 193,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11304368405"
    },
    {
      "job": 111446159292,
      "time": 139,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "11304229052"
    },
    {
      "job": 111446159319,
      "time": 169,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11304468581"
    },
    {
      "job": 111446159288,
      "time": 170,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11304104650"
    },
    {
      "job": 111446159270,
      "time": 169,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11303739771"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/rladies/actions/runs/37205441238",
  "_status": "success",
  "_upstream": "https://github.com/rladies/jinx",
  "_commit": {
    "id": "4c2d1be1048286e7184633e16113b1a037557d5f",
    "author": "Athanasia Monika Mowinckel <14014329+drmowinckels@users.noreply.github.com>",
    "committer": "GitHub <noreply@github.com>",
    "message": "feat(blog-feed): announce a post with its own preview (#176)\n\nA post goes out as Slack blocks: the heading, the linked title and the\npost's own description in one section, the preview image as its own\nblock so Slack renders it full width, and the byline in a context block.\n\nblog_feed_og() reads the description and image from the post itself -\nOpen Graph, falling back to Twitter's tags and the plain description.\nIt costs one request per announced post, memoised per run, so a page is\nread once however many workspaces announce it.\n\nImage blocks always carry alt text. A post's own og:image:alt is used\nwhen set and becomes the caption too; when missing, the alt says what\nthe image is rather than inventing what it shows.\n\nSlack's unfurl is off when we supply a preview and on when we do not. A\nrejection naming the blocks is retried once as plain text, so one\nmalformed og:image costs the picture rather than the post.\n\nCo-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>",
    "time": 1791108711
  },
  "_maintainer": {
    "name": "RLadies+",
    "email": "info@rladies.org"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.4.0",
      "role": "Depends"
    },
    {
      "package": "bskyr",
      "role": "Imports"
    },
    {
      "package": "cli",
      "role": "Imports"
    },
    {
      "package": "cloudflarer",
      "role": "Imports"
    },
    {
      "package": "gh",
      "version": ">= 1.4.0",
      "role": "Imports"
    },
    {
      "package": "glue",
      "role": "Imports"
    },
    {
      "package": "httr2",
      "role": "Imports"
    },
    {
      "package": "jsonlite",
      "role": "Imports"
    },
    {
      "package": "jsonvalidate",
      "role": "Imports"
    },
    {
      "package": "lubridate",
      "role": "Imports"
    },
    {
      "package": "magick",
      "role": "Imports"
    },
    {
      "package": "meetupr",
      "role": "Imports"
    },
    {
      "package": "openssl",
      "role": "Imports"
    },
    {
      "package": "rmarkdown",
      "role": "Imports"
    },
    {
      "package": "rtoot",
      "role": "Imports"
    },
    {
      "package": "rvest",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "stringi",
      "role": "Imports"
    },
    {
      "package": "stringr",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "xml2",
      "role": "Imports"
    },
    {
      "package": "yaml",
      "role": "Imports"
    },
    {
      "package": "callr",
      "role": "Suggests"
    },
    {
      "package": "httptest2",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "pkgdown",
      "role": "Suggests"
    },
    {
      "package": "reprex",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    }
  ],
  "_owner": "rladies",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-10",
      "n": 9
    },
    {
      "week": "2026-20",
      "n": 66
    },
    {
      "week": "2026-21",
      "n": 4
    },
    {
      "week": "2026-22",
      "n": 1
    },
    {
      "week": "2026-24",
      "n": 2
    },
    {
      "week": "2026-26",
      "n": 3
    },
    {
      "week": "2026-27",
      "n": 9
    },
    {
      "week": "2026-28",
      "n": 9
    },
    {
      "week": "2026-29",
      "n": 13
    },
    {
      "week": "2026-30",
      "n": 5
    },
    {
      "week": "2026-31",
      "n": 3
    },
    {
      "week": "2026-38",
      "n": 16
    },
    {
      "week": "2026-39",
      "n": 26
    },
    {
      "week": "2026-40",
      "n": 9
    }
  ],
  "_tags": [
    {
      "name": "v0.2.0",
      "date": "2026-07-13"
    }
  ],
  "_stars": 1,
  "_contributors": [
    {
      "user": "drmowinckels",
      "count": 273,
      "uuid": 14014329
    },
    {
      "user": "copilot",
      "count": 2,
      "uuid": 198982749
    }
  ],
  "_userbio": {
    "uuid": 21295846,
    "type": "organization",
    "name": "RLadies+ Global",
    "followers": 599,
    "description": "RLadies+ is a world-wide organization to promote gender diversity in the R community"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/jinx"
  },
  "_devurl": "https://github.com/rladies/jinx",
  "_pkgdown": "https://rladies.github.io/jinx/",
  "_searchresults": 0,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/jinx.html",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_cranurl": false,
  "_exports": [
    "airtable_base_allowed",
    "airtable_record_update",
    "airtable_webhook_process",
    "analytics_collect_chapter_activity",
    "analytics_collect_contributor_growth",
    "analytics_compute_trends",
    "analytics_format_markdown",
    "analytics_generate_dashboard",
    "announce_create_message",
    "announce_post",
    "announce_post_bluesky",
    "announce_post_mastodon",
    "announce_post_reply",
    "announce_send_newsletter",
    "blog_add_pr",
    "blog_check_links",
    "blog_check_links_repo",
    "blog_create_entry",
    "blog_feed_blocks",
    "blog_feed_collect",
    "blog_feed_format",
    "blog_feed_items",
    "blog_feed_new_items",
    "blog_feed_og",
    "blog_feed_pending",
    "blog_feed_post",
    "blog_feed_run",
    "blog_feed_sources",
    "cf_ops_format_workers_report",
    "cf_ops_get_kv_value",
    "cf_ops_kv_delete",
    "cf_ops_kv_put",
    "cf_ops_list_kv_keys",
    "cf_ops_list_workers_scripts",
    "cf_ops_purge_cache",
    "cf_ops_workers_invocations",
    "cfp_check_deadlines",
    "cfp_create_issue",
    "cfp_list_open",
    "cfp_recommend_speaker",
    "channel_copy_apply",
    "channel_copy_plan",
    "channel_copy_proposals",
    "channel_index_load",
    "channel_promo_build",
    "channel_promo_format",
    "channel_promo_post",
    "channel_rename_proposals",
    "chapter_check_health",
    "chapter_checklist_tick",
    "chapter_confirm_send",
    "chapter_create",
    "chapter_create_pr",
    "chapter_create_setup",
    "chapter_create_update",
    "chapter_duplicate_check",
    "chapter_duplicate_comment",
    "chapter_duplicate_report",
    "chapter_email_approvals",
    "chapter_email_provision",
    "chapter_find_issue",
    "chapter_initiated_date",
    "chapter_mailbox_create",
    "chapter_meetup_brief",
    "chapter_meetup_groups",
    "chapter_meetup_logo_upload",
    "chapter_meetup_name",
    "chapter_meetup_request",
    "chapter_meetup_urlname",
    "chapter_meta_fetch",
    "chapter_monitor_status",
    "chapter_onboard_blocker",
    "chapter_onboard_state",
    "chapter_onboard_summary",
    "chapter_onboard_website",
    "chapter_organiser_submissions",
    "chapter_remind_stale",
    "chapter_repo_audit",
    "chapter_repo_audit_report",
    "chapter_repo_create",
    "chapter_repo_name",
    "chapter_report_health",
    "chapter_slack_prompt",
    "chapter_slack_sent",
    "chapter_status_reconcile",
    "chapter_status_reconcile_report",
    "chapter_status_report",
    "chapter_team_audit",
    "chapter_team_audit_report",
    "chapter_team_create",
    "chapter_team_description",
    "chapter_team_name",
    "chapter_team_slug",
    "chapter_validate_files",
    "chapter_validate_report",
    "chunk_markdown",
    "cloudflare_account_id",
    "cloudflare_embed",
    "cloudflare_generate",
    "cloudflare_vectorize_upsert",
    "cmd_attach_slack_context",
    "cmd_authorize",
    "cmd_execute",
    "cmd_parse",
    "conference_generate_report",
    "conference_list_speakers",
    "contributor_format",
    "contributor_list",
    "contributor_list_org",
    "contributor_update",
    "copilot_request_review",
    "copilot_review_pr",
    "copilot_sync_repo",
    "directory_crop_image",
    "directory_mark_synced",
    "directory_optimize_image",
    "directory_purge_submissions",
    "directory_sync_airtable",
    "directory_validate_filename",
    "directory_verify_handles",
    "event_authorize",
    "event_create_summary",
    "event_execute",
    "event_list_chapter",
    "event_parse",
    "event_sync_chapters",
    "gather_rag_source",
    "gh_branch_upsert",
    "gh_greet_contributor",
    "gh_open_or_update_pr",
    "gh_post_checklist",
    "gh_thank_contributor",
    "gh_thank_issue_contributors",
    "gh_welcome_contributor",
    "gha_generate_dashboard",
    "gt_check_invitations",
    "gt_create_offboarding",
    "gt_finalize_offboarding",
    "gt_finalize_onboarding",
    "gt_invite",
    "gt_remind_stale",
    "gt_schedule_onboarding_meeting",
    "guide_email_template",
    "guide_template",
    "i18n_check_coverage",
    "i18n_get_chapter_language",
    "i18n_list_languages",
    "i18n_translate_template",
    "i18n_validate_translations",
    "li_get_version",
    "li_media_upload",
    "li_oauth",
    "li_post_write",
    "li_req",
    "li_urn_me",
    "load_copilot_review_config",
    "load_labels_config",
    "load_rag_sources",
    "load_review_rules",
    "load_teams_config",
    "mail_send",
    "meeting_poll_best",
    "meeting_poll_create",
    "meeting_poll_format_best",
    "meeting_poll_format_created",
    "meeting_poll_get",
    "meeting_poll_ics",
    "meeting_poll_lock",
    "meetup_urlname_status",
    "pending_link_consume",
    "prepare_inactivity_emails",
    "promo_blurb",
    "promo_eligible_channels",
    "promo_pick_channel",
    "question_coding_declined_count",
    "question_content_gaps",
    "question_digest_build",
    "question_digest_format",
    "question_digest_post",
    "question_downvoted_rank",
    "question_draft_guide_snippet",
    "question_feedback_format",
    "question_feedback_summary",
    "question_gaps_rank",
    "question_log_format",
    "question_log_purge",
    "question_log_query",
    "question_vote_apply",
    "r_challenge_adversarial_check",
    "r_challenge_allowed_packages",
    "r_challenge_difficulties",
    "r_challenge_difficulty_badge",
    "r_challenge_difficulty_label",
    "r_challenge_draft_build",
    "r_challenge_draft_post",
    "r_challenge_format_issue",
    "r_challenge_format_slack",
    "r_challenge_generate",
    "r_challenge_issue_title",
    "r_challenge_open_issue",
    "r_challenge_parse",
    "r_challenge_render_statement",
    "r_challenge_reprex_check",
    "rag_chunk_id",
    "rag_index_build",
    "random_emoji",
    "reaction_direction",
    "reaction_event_apply",
    "reaction_log_increment",
    "report_format_markdown",
    "report_generate",
    "review_check_pr_naming",
    "review_run",
    "rum_collect_analytics",
    "rum_format_analytics",
    "rum_generate_report",
    "setup_channel_process",
    "short_url",
    "slack_api_call",
    "slack_bot_token",
    "slack_channel_id_lookup",
    "slack_channel_index",
    "slack_channel_mention",
    "slack_conversations_open",
    "slack_interaction_process",
    "slack_invite_approval_checklist_blocks",
    "slack_invite_batch",
    "slack_invite_request",
    "slack_invite_request_blocks",
    "slack_post_message",
    "slack_response_url_post",
    "slack_subscribe_rss",
    "slack_workspace_for_team",
    "tags2hash",
    "validate_blog_entry",
    "validate_directory_entries",
    "validate_directory_pr",
    "website_collect_analytics",
    "website_format_analytics",
    "website_generate_report",
    "website_merge_pending",
    "website_publish_report",
    "welcome_message_render",
    "welcome_send"
  ],
  "_help": [
    {
      "page": "airtable_base_allowed",
      "title": "Check whether an Airtable base is within the configured token's scope",
      "topics": [
        "airtable_base_allowed"
      ]
    },
    {
      "page": "airtable_record_update",
      "title": "Update fields on an Airtable record",
      "topics": [
        "airtable_record_update"
      ]
    },
    {
      "page": "airtable_webhook_process",
      "title": "Process an Airtable invite-request webhook",
      "topics": [
        "airtable_webhook_process"
      ]
    },
    {
      "page": "analytics_collect_chapter_activity",
      "title": "Collect chapter activity data",
      "topics": [
        "analytics_collect_chapter_activity"
      ]
    },
    {
      "page": "analytics_collect_contributor_growth",
      "title": "Collect contributor growth data",
      "topics": [
        "analytics_collect_contributor_growth"
      ]
    },
    {
      "page": "analytics_compute_trends",
      "title": "Compute activity trends",
      "topics": [
        "analytics_compute_trends"
      ]
    },
    {
      "page": "analytics_format_markdown",
      "title": "Format analytics as markdown",
      "topics": [
        "analytics_format_markdown"
      ]
    },
    {
      "page": "analytics_generate_dashboard",
      "title": "Generate analytics dashboard",
      "topics": [
        "analytics_generate_dashboard"
      ]
    },
    {
      "page": "announce_create_message",
      "title": "Create a formatted announcement message",
      "topics": [
        "announce_create_message"
      ]
    },
    {
      "page": "announce_post",
      "title": "Announce a blog post across multiple platforms",
      "topics": [
        "announce_post"
      ]
    },
    {
      "page": "announce_post_bluesky",
      "title": "Post an announcement to Bluesky",
      "topics": [
        "announce_post_bluesky"
      ]
    },
    {
      "page": "announce_post_mastodon",
      "title": "Post an announcement to Mastodon",
      "topics": [
        "announce_post_mastodon"
      ]
    },
    {
      "page": "announce_post_reply",
      "title": "Post a reply comment on an issue or PR",
      "topics": [
        "announce_post_reply"
      ]
    },
    {
      "page": "announce_send_newsletter",
      "title": "Send a newsletter via ConvertKit",
      "topics": [
        "announce_send_newsletter"
      ]
    },
    {
      "page": "blog_add_pr",
      "title": "Add a community blog entry via a pull request",
      "topics": [
        "blog_add_pr"
      ]
    },
    {
      "page": "blog_check_links",
      "title": "Check blog URLs and RSS feeds for broken links",
      "topics": [
        "blog_check_links"
      ]
    },
    {
      "page": "blog_check_links_repo",
      "title": "Check community blog links from the awesome-rladies-creations repo",
      "topics": [
        "blog_check_links_repo"
      ]
    },
    {
      "page": "blog_create_entry",
      "title": "Auto-generate a blog entry JSON file from a URL",
      "topics": [
        "blog_create_entry"
      ]
    },
    {
      "page": "blog_feed_blocks",
      "title": "Build a new post as Slack blocks",
      "topics": [
        "blog_feed_blocks"
      ]
    },
    {
      "page": "blog_feed_collect",
      "title": "Collect every recent post across the curated feeds",
      "topics": [
        "blog_feed_collect"
      ]
    },
    {
      "page": "blog_feed_format",
      "title": "Format one new post as a Slack mrkdwn message",
      "topics": [
        "blog_feed_format"
      ]
    },
    {
      "page": "blog_feed_items",
      "title": "Parse an RSS or Atom document into a data frame of items",
      "topics": [
        "blog_feed_items"
      ]
    },
    {
      "page": "blog_feed_new_items",
      "title": "Keep the items worth announcing",
      "topics": [
        "blog_feed_new_items"
      ]
    },
    {
      "page": "blog_feed_og",
      "title": "Read a post's Open Graph preview data",
      "topics": [
        "blog_feed_og"
      ]
    },
    {
      "page": "blog_feed_pending",
      "title": "Keep the posts one workspace still owes its channel",
      "topics": [
        "blog_feed_pending"
      ]
    },
    {
      "page": "blog_feed_post",
      "title": "Announce new community posts in one workspace's blog channel",
      "topics": [
        "blog_feed_post"
      ]
    },
    {
      "page": "blog_feed_run",
      "title": "Serve every workspace's blog channel from one poll of the feeds",
      "topics": [
        "blog_feed_run"
      ]
    },
    {
      "page": "blog_feed_sources",
      "title": "Split curated entries into pollable sources and gaps",
      "topics": [
        "blog_feed_sources"
      ]
    },
    {
      "page": "cf_ops_format_workers_report",
      "title": "Format Workers invocation metrics as a markdown table",
      "topics": [
        "cf_ops_format_workers_report"
      ]
    },
    {
      "page": "cf_ops_get_kv_value",
      "title": "Read a single value from a Cloudflare KV namespace",
      "topics": [
        "cf_ops_get_kv_value"
      ]
    },
    {
      "page": "cf_ops_kv_delete",
      "title": "Delete a single value from a Cloudflare KV namespace",
      "topics": [
        "cf_ops_kv_delete"
      ]
    },
    {
      "page": "cf_ops_kv_put",
      "title": "Write a single value to a Cloudflare KV namespace",
      "topics": [
        "cf_ops_kv_put"
      ]
    },
    {
      "page": "cf_ops_list_kv_keys",
      "title": "List keys in a Cloudflare KV namespace",
      "topics": [
        "cf_ops_list_kv_keys"
      ]
    },
    {
      "page": "cf_ops_list_workers_scripts",
      "title": "List Workers scripts deployed on the account",
      "topics": [
        "cf_ops_list_workers_scripts"
      ]
    },
    {
      "page": "cf_ops_purge_cache",
      "title": "Purge specific URLs or prefixes from the Cloudflare cache",
      "topics": [
        "cf_ops_purge_cache"
      ]
    },
    {
      "page": "cf_ops_workers_invocations",
      "title": "Query Workers invocation/error/CPU metrics",
      "topics": [
        "cf_ops_workers_invocations"
      ]
    },
    {
      "page": "cfp_check_deadlines",
      "title": "Check CFP deadlines and post reminders",
      "topics": [
        "cfp_check_deadlines"
      ]
    },
    {
      "page": "cfp_create_issue",
      "title": "Create a CFP tracking issue",
      "topics": [
        "cfp_create_issue"
      ]
    },
    {
      "page": "cfp_list_open",
      "title": "List open CFPs tracked as GitHub issues",
      "topics": [
        "cfp_list_open"
      ]
    },
    {
      "page": "cfp_recommend_speaker",
      "title": "Recommend a speaker for a conference",
      "topics": [
        "cfp_recommend_speaker"
      ]
    },
    {
      "page": "channel_copy_apply",
      "title": "Apply a channel copy plan",
      "topics": [
        "channel_copy_apply"
      ]
    },
    {
      "page": "channel_copy_plan",
      "title": "Plan the channel copy and rename pass for a workspace",
      "topics": [
        "channel_copy_plan"
      ]
    },
    {
      "page": "channel_copy_proposals",
      "title": "Read the reviewed channel copy proposals",
      "topics": [
        "channel_copy_proposals"
      ]
    },
    {
      "page": "channel_index_load",
      "title": "Load (and cache) a workspace's full channel name-to-id index",
      "topics": [
        "channel_index_load"
      ]
    },
    {
      "page": "channel_promo_build",
      "title": "Build the weekly channel-spotlight message",
      "topics": [
        "channel_promo_build"
      ]
    },
    {
      "page": "channel_promo_format",
      "title": "Format a channel spotlight as a Slack mrkdwn message",
      "topics": [
        "channel_promo_format"
      ]
    },
    {
      "page": "channel_promo_post",
      "title": "Build and post the weekly channel spotlight to the community workspace",
      "topics": [
        "channel_promo_post"
      ]
    },
    {
      "page": "channel_rename_proposals",
      "title": "Read the reviewed channel rename proposals",
      "topics": [
        "channel_rename_proposals"
      ]
    },
    {
      "page": "chapter_check_health",
      "title": "Check chapter health across the organization",
      "topics": [
        "chapter_check_health"
      ]
    },
    {
      "page": "chapter_checklist_tick",
      "title": "Tick a checklist item on an onboarding issue",
      "topics": [
        "chapter_checklist_tick"
      ]
    },
    {
      "page": "chapter_confirm_send",
      "title": "Confirm a completed onboarding to the chapter organisers",
      "topics": [
        "chapter_confirm_send"
      ]
    },
    {
      "page": "chapter_create",
      "title": "Create a new chapter JSON file",
      "topics": [
        "chapter_create"
      ]
    },
    {
      "page": "chapter_create_pr",
      "title": "Create a chapter JSON PR on the website repo",
      "topics": [
        "chapter_create_pr"
      ]
    },
    {
      "page": "chapter_create_setup",
      "title": "Create a new chapter setup issue",
      "topics": [
        "chapter_create_setup"
      ]
    },
    {
      "page": "chapter_create_update",
      "title": "Create a chapter update issue",
      "topics": [
        "chapter_create_update"
      ]
    },
    {
      "page": "chapter_duplicate_check",
      "title": "Check whether a requested chapter already exists or has neighbours",
      "topics": [
        "chapter_duplicate_check"
      ]
    },
    {
      "page": "chapter_duplicate_comment",
      "title": "Post the duplicate check onto an onboarding issue",
      "topics": [
        "chapter_duplicate_comment"
      ]
    },
    {
      "page": "chapter_duplicate_report",
      "title": "Render a duplicate check as an onboarding issue comment",
      "topics": [
        "chapter_duplicate_report"
      ]
    },
    {
      "page": "chapter_email_approvals",
      "title": "Find the approvals on a chapter onboarding issue",
      "topics": [
        "chapter_email_approvals"
      ]
    },
    {
      "page": "chapter_email_provision",
      "title": "Provision a chapter mailbox once a human has approved it",
      "topics": [
        "chapter_email_provision"
      ]
    },
    {
      "page": "chapter_find_issue",
      "title": "Find the open onboarding issue for a chapter",
      "topics": [
        "chapter_find_issue"
      ]
    },
    {
      "page": "chapter_initiated_date",
      "title": "When a chapter first appeared in the website repository",
      "topics": [
        "chapter_initiated_date"
      ]
    },
    {
      "page": "chapter_mailbox_create",
      "title": "Create a chapter mailbox in Google Workspace",
      "topics": [
        "chapter_mailbox_create"
      ]
    },
    {
      "page": "chapter_meetup_brief",
      "title": "Render the Meetup setup brief for a chapter",
      "topics": [
        "chapter_meetup_brief"
      ]
    },
    {
      "page": "chapter_meetup_groups",
      "title": "Chapters that have a Meetup group, read from the website data",
      "topics": [
        "chapter_meetup_groups"
      ]
    },
    {
      "page": "chapter_meetup_logo_upload",
      "title": "Set a chapter's Meetup group photo to the RLadies+ logo",
      "topics": [
        "chapter_meetup_logo_upload"
      ]
    },
    {
      "page": "chapter_meetup_name",
      "title": "The Meetup group name for a chapter",
      "topics": [
        "chapter_meetup_name"
      ]
    },
    {
      "page": "chapter_meetup_request",
      "title": "Post the Meetup setup brief on an onboarding issue",
      "topics": [
        "chapter_meetup_request"
      ]
    },
    {
      "page": "chapter_meetup_urlname",
      "title": "The Meetup URL name for a chapter",
      "topics": [
        "chapter_meetup_urlname"
      ]
    },
    {
      "page": "chapter_meta_fetch",
      "title": "Read the machine-readable block off an onboarding issue",
      "topics": [
        "chapter_meta_fetch"
      ]
    },
    {
      "page": "chapter_monitor_status",
      "title": "Monitor chapter activity status",
      "topics": [
        "chapter_monitor_status"
      ]
    },
    {
      "page": "chapter_onboard_blocker",
      "title": "Which team is holding a chapter onboarding up",
      "topics": [
        "chapter_onboard_blocker"
      ]
    },
    {
      "page": "chapter_onboard_state",
      "title": "Read the checklist state of a chapter onboarding issue",
      "topics": [
        "chapter_onboard_state"
      ]
    },
    {
      "page": "chapter_onboard_summary",
      "title": "Summarise an onboarding checklist as markdown",
      "topics": [
        "chapter_onboard_summary"
      ]
    },
    {
      "page": "chapter_onboard_website",
      "title": "Add a prospective chapter to the website from its onboarding issue",
      "topics": [
        "chapter_onboard_website"
      ]
    },
    {
      "page": "chapter_organiser_submissions",
      "title": "Find organiser form submissions for a chapter",
      "topics": [
        "chapter_organiser_submissions"
      ]
    },
    {
      "page": "chapter_remind_stale",
      "title": "Nudge the team holding up a stale chapter onboarding",
      "topics": [
        "chapter_remind_stale"
      ]
    },
    {
      "page": "chapter_repo_audit",
      "title": "Audit the GitHub references in chapter data",
      "topics": [
        "chapter_repo_audit"
      ]
    },
    {
      "page": "chapter_repo_audit_report",
      "title": "Render a chapter GitHub audit as markdown",
      "topics": [
        "chapter_repo_audit_report"
      ]
    },
    {
      "page": "chapter_repo_create",
      "title": "Create a chapter's presentations repository",
      "topics": [
        "chapter_repo_create"
      ]
    },
    {
      "page": "chapter_repo_name",
      "title": "The presentations repository name for a chapter",
      "topics": [
        "chapter_repo_name"
      ]
    },
    {
      "page": "chapter_report_health",
      "title": "Generate a chapter health report",
      "topics": [
        "chapter_report_health"
      ]
    },
    {
      "page": "chapter_slack_prompt",
      "title": "Prompt the onboarding issue for the organiser Slack invite",
      "topics": [
        "chapter_slack_prompt"
      ]
    },
    {
      "page": "chapter_slack_sent",
      "title": "Record that the organisers Slack invite was sent",
      "topics": [
        "chapter_slack_sent"
      ]
    },
    {
      "page": "chapter_status_reconcile",
      "title": "Reconcile stored chapter status against actual Meetup activity",
      "topics": [
        "chapter_status_reconcile"
      ]
    },
    {
      "page": "chapter_status_reconcile_report",
      "title": "Render a status reconciliation as markdown",
      "topics": [
        "chapter_status_reconcile_report"
      ]
    },
    {
      "page": "chapter_status_report",
      "title": "Report the state of a chapter onboarding",
      "topics": [
        "chapter_status_report"
      ]
    },
    {
      "page": "chapter_team_audit",
      "title": "Compare the chapter teams against the website chapter data",
      "topics": [
        "chapter_team_audit"
      ]
    },
    {
      "page": "chapter_team_audit_report",
      "title": "Render a team audit as markdown",
      "topics": [
        "chapter_team_audit_report"
      ]
    },
    {
      "page": "chapter_team_create",
      "title": "Create a chapter's GitHub team",
      "topics": [
        "chapter_team_create"
      ]
    },
    {
      "page": "chapter_team_description",
      "title": "The chapter description shown on the team",
      "topics": [
        "chapter_team_description"
      ]
    },
    {
      "page": "chapter_team_name",
      "title": "The display name for a chapter's GitHub team",
      "topics": [
        "chapter_team_name"
      ]
    },
    {
      "page": "chapter_team_slug",
      "title": "The GitHub team slug for a chapter",
      "topics": [
        "chapter_team_slug"
      ]
    },
    {
      "page": "chapter_validate_files",
      "title": "Validate website chapter data files",
      "topics": [
        "chapter_validate_files"
      ]
    },
    {
      "page": "chapter_validate_report",
      "title": "Render chapter validation issues as markdown",
      "topics": [
        "chapter_validate_report"
      ]
    },
    {
      "page": "chunk_markdown",
      "title": "Chunk markdown into retrieval-sized pieces",
      "topics": [
        "chunk_markdown"
      ]
    },
    {
      "page": "cloudflare_account_id",
      "title": "Discover the Cloudflare account ID for a token",
      "topics": [
        "cloudflare_account_id"
      ]
    },
    {
      "page": "cloudflare_embed",
      "title": "Embed texts with a Cloudflare Workers AI model",
      "topics": [
        "cloudflare_embed"
      ]
    },
    {
      "page": "cloudflare_generate",
      "title": "Generate chat-completion text with a Cloudflare Workers AI model",
      "topics": [
        "cloudflare_generate"
      ]
    },
    {
      "page": "cloudflare_vectorize_upsert",
      "title": "Upsert vectors into a Cloudflare Vectorize index",
      "topics": [
        "cloudflare_vectorize_upsert"
      ]
    },
    {
      "page": "cmd_attach_slack_context",
      "title": "Attach Slack context fields to a parsed command",
      "topics": [
        "cmd_attach_slack_context"
      ]
    },
    {
      "page": "cmd_authorize",
      "title": "Authorize a parsed command before execution",
      "topics": [
        "cmd_authorize"
      ]
    },
    {
      "page": "cmd_execute",
      "title": "Execute a parsed jinx command",
      "topics": [
        "cmd_execute"
      ]
    },
    {
      "page": "cmd_parse",
      "title": "Parse a jinx command from an issue comment",
      "topics": [
        "cmd_parse"
      ]
    },
    {
      "page": "conference_generate_report",
      "title": "Generate conference coordination report",
      "topics": [
        "conference_generate_report"
      ]
    },
    {
      "page": "conference_list_speakers",
      "title": "List speaker recommendations for a conference",
      "topics": [
        "conference_list_speakers"
      ]
    },
    {
      "page": "contributor_format",
      "title": "Generate a contributors markdown section",
      "topics": [
        "contributor_format"
      ]
    },
    {
      "page": "contributor_list",
      "title": "List contributors for a repository",
      "topics": [
        "contributor_list"
      ]
    },
    {
      "page": "contributor_list_org",
      "title": "Collect contributors across multiple repos",
      "topics": [
        "contributor_list_org"
      ]
    },
    {
      "page": "contributor_update",
      "title": "Generate and update a contributors list for a repo",
      "topics": [
        "contributor_update"
      ]
    },
    {
      "page": "copilot_request_review",
      "title": "Request GitHub Copilot as a reviewer on a pull request",
      "topics": [
        "copilot_request_review"
      ]
    },
    {
      "page": "copilot_review_pr",
      "title": "Summon a GitHub Copilot review on a pull request",
      "topics": [
        "copilot_review_pr"
      ]
    },
    {
      "page": "copilot_sync_repo",
      "title": "Sync grimoire review skills into a repo as Copilot instructions",
      "topics": [
        "copilot_sync_repo"
      ]
    },
    {
      "page": "directory_crop_image",
      "title": "Crop and resize a directory profile image",
      "topics": [
        "directory_crop_image"
      ]
    },
    {
      "page": "directory_mark_synced",
      "title": "Flag handled submissions as synced.",
      "topics": [
        "directory_mark_synced"
      ]
    },
    {
      "page": "directory_optimize_image",
      "title": "Optimize an image for web display",
      "topics": [
        "directory_optimize_image"
      ]
    },
    {
      "page": "directory_purge_submissions",
      "title": "Erase every Airtable submission for the given directory slugs.",
      "topics": [
        "directory_purge_submissions"
      ]
    },
    {
      "page": "directory_sync_airtable",
      "title": "Sync directory entries from Airtable",
      "topics": [
        "directory_sync_airtable"
      ]
    },
    {
      "page": "directory_validate_filename",
      "title": "Validate a directory entry filename",
      "topics": [
        "directory_validate_filename"
      ]
    },
    {
      "page": "directory_verify_handles",
      "title": "Verify that social media handles exist",
      "topics": [
        "directory_verify_handles"
      ]
    },
    {
      "page": "event_authorize",
      "title": "Authorize a parsed event before execution",
      "topics": [
        "event_authorize"
      ]
    },
    {
      "page": "event_create_summary",
      "title": "Create a formatted event summary",
      "topics": [
        "event_create_summary"
      ]
    },
    {
      "page": "event_execute",
      "title": "Execute a parsed, authorized event",
      "topics": [
        "event_execute"
      ]
    },
    {
      "page": "event_list_chapter",
      "title": "List events for a chapter",
      "topics": [
        "event_list_chapter"
      ]
    },
    {
      "page": "event_parse",
      "title": "Parse a 'slack-event' dispatch payload",
      "topics": [
        "event_parse"
      ]
    },
    {
      "page": "event_sync_chapters",
      "title": "Sync events across all chapters",
      "topics": [
        "event_sync_chapters"
      ]
    },
    {
      "page": "gather_rag_source",
      "title": "Dispatch a source spec to the appropriate gather function",
      "topics": [
        "gather_rag_source"
      ]
    },
    {
      "page": "gh_branch_upsert",
      "title": "Create or reset a branch to match a base ref",
      "topics": [
        "gh_branch_upsert"
      ]
    },
    {
      "page": "gh_greet_contributor",
      "title": "Greet a new PR author",
      "topics": [
        "gh_greet_contributor"
      ]
    },
    {
      "page": "gh_open_or_update_pr",
      "title": "Open a PR, or return the existing open PR for a branch",
      "topics": [
        "gh_open_or_update_pr"
      ]
    },
    {
      "page": "gh_post_checklist",
      "title": "Post a content review checklist on a PR",
      "topics": [
        "gh_post_checklist"
      ]
    },
    {
      "page": "gh_thank_contributor",
      "title": "Thank everyone who contributed to a merged PR",
      "topics": [
        "gh_thank_contributor"
      ]
    },
    {
      "page": "gh_thank_issue_contributors",
      "title": "Thank everyone who took part in a closed issue",
      "topics": [
        "gh_thank_issue_contributors"
      ]
    },
    {
      "page": "gh_welcome_contributor",
      "title": "Welcome a contributor on a new PR or issue",
      "topics": [
        "gh_welcome_contributor"
      ]
    },
    {
      "page": "gha_generate_dashboard",
      "title": "Generate GitHub Actions dashboard data",
      "topics": [
        "gha_generate_dashboard"
      ]
    },
    {
      "page": "gt_check_invitations",
      "title": "Check pending global team invitations",
      "topics": [
        "gt_check_invitations"
      ]
    },
    {
      "page": "gt_create_offboarding",
      "title": "Create a global team offboarding issue",
      "topics": [
        "gt_create_offboarding"
      ]
    },
    {
      "page": "gt_finalize_offboarding",
      "title": "Finalize global team offboarding by removing user from teams",
      "topics": [
        "gt_finalize_offboarding"
      ]
    },
    {
      "page": "gt_finalize_onboarding",
      "title": "Finalize global team onboarding for an accepted member",
      "topics": [
        "gt_finalize_onboarding"
      ]
    },
    {
      "page": "gt_invite",
      "title": "Invite a user to the RLadies+ global team",
      "topics": [
        "gt_invite"
      ]
    },
    {
      "page": "gt_remind_stale",
      "title": "Send reminders on stale global team onboarding/offboarding issues",
      "topics": [
        "gt_remind_stale"
      ]
    },
    {
      "page": "gt_schedule_onboarding_meeting",
      "title": "Open the onboarding meeting poll and post it to the onboarding issue",
      "topics": [
        "gt_schedule_onboarding_meeting"
      ]
    },
    {
      "page": "guide_email_template",
      "title": "Fetch a canonical email template from the guide",
      "topics": [
        "guide_email_template"
      ]
    },
    {
      "page": "guide_template",
      "title": "Fetch a canonical communications template from the guide",
      "topics": [
        "guide_template"
      ]
    },
    {
      "page": "i18n_check_coverage",
      "title": "Check translation coverage across languages",
      "topics": [
        "i18n_check_coverage"
      ]
    },
    {
      "page": "i18n_get_chapter_language",
      "title": "Get a chapter's preferred language",
      "topics": [
        "i18n_get_chapter_language"
      ]
    },
    {
      "page": "i18n_list_languages",
      "title": "List supported languages",
      "topics": [
        "i18n_list_languages"
      ]
    },
    {
      "page": "i18n_translate_template",
      "title": "Translate a template with language fallback",
      "topics": [
        "i18n_translate_template"
      ]
    },
    {
      "page": "i18n_validate_translations",
      "title": "Validate translations for placeholder consistency",
      "topics": [
        "i18n_validate_translations"
      ]
    },
    {
      "page": "li_get_version",
      "title": "Get LinkedIn API version string",
      "topics": [
        "li_get_version"
      ]
    },
    {
      "page": "li_media_upload",
      "title": "Upload media to LinkedIn",
      "topics": [
        "li_media_upload"
      ]
    },
    {
      "page": "li_oauth",
      "title": "Perform LinkedIn OAuth authentication",
      "topics": [
        "li_oauth"
      ]
    },
    {
      "page": "li_post_write",
      "title": "Post to LinkedIn",
      "topics": [
        "li_post_write"
      ]
    },
    {
      "page": "li_req",
      "title": "Create a base LinkedIn API request",
      "topics": [
        "li_req"
      ]
    },
    {
      "page": "li_urn_me",
      "title": "Get the LinkedIn URN for the authenticated user",
      "topics": [
        "li_urn_me"
      ]
    },
    {
      "page": "load_copilot_review_config",
      "title": "Load the Copilot review bridge configuration",
      "topics": [
        "load_copilot_review_config"
      ]
    },
    {
      "page": "load_labels_config",
      "title": "Load file-path to label mappings",
      "topics": [
        "load_labels_config"
      ]
    },
    {
      "page": "load_rag_sources",
      "title": "Load the configured RAG source list",
      "topics": [
        "load_rag_sources"
      ]
    },
    {
      "page": "load_review_rules",
      "title": "Load PR review rules",
      "topics": [
        "load_review_rules"
      ]
    },
    {
      "page": "load_teams_config",
      "title": "Load teams configuration",
      "topics": [
        "load_teams_config"
      ]
    },
    {
      "page": "mail_send",
      "title": "Send an email as jinx",
      "topics": [
        "mail_send"
      ]
    },
    {
      "page": "meeting_poll_best",
      "title": "Get the ranked best slots for a poll",
      "topics": [
        "meeting_poll_best"
      ]
    },
    {
      "page": "meeting_poll_create",
      "title": "Create a meeting-scheduling poll on samkoma",
      "topics": [
        "meeting_poll_create"
      ]
    },
    {
      "page": "meeting_poll_format_best",
      "title": "Format ranked best slots as markdown",
      "topics": [
        "meeting_poll_format_best"
      ]
    },
    {
      "page": "meeting_poll_format_created",
      "title": "Format a created poll as a markdown announcement",
      "topics": [
        "meeting_poll_format_created"
      ]
    },
    {
      "page": "meeting_poll_get",
      "title": "Fetch a poll and its aggregated responses",
      "topics": [
        "meeting_poll_get"
      ]
    },
    {
      "page": "meeting_poll_ics",
      "title": "Export the locked slot of a poll as an iCalendar (.ics) string",
      "topics": [
        "meeting_poll_ics"
      ]
    },
    {
      "page": "meeting_poll_lock",
      "title": "Lock in (or clear) the chosen slot for a poll",
      "topics": [
        "meeting_poll_lock"
      ]
    },
    {
      "page": "meetup_urlname_status",
      "title": "Whether a Meetup urlname looks taken",
      "topics": [
        "meetup_urlname_status"
      ]
    },
    {
      "page": "pending_link_consume",
      "title": "Consume a pending chapter sign-up link for a newly joined email",
      "topics": [
        "pending_link_consume"
      ]
    },
    {
      "page": "prepare_inactivity_emails",
      "title": "Prepare the guide's first inactivity notice for inactive chapters",
      "topics": [
        "prepare_inactivity_emails"
      ]
    },
    {
      "page": "promo_blurb",
      "title": "Draft a spotlight invitation for a channel in Jinx's voice",
      "topics": [
        "promo_blurb"
      ]
    },
    {
      "page": "promo_eligible_channels",
      "title": "Select the community public channels eligible for promotion",
      "topics": [
        "promo_eligible_channels"
      ]
    },
    {
      "page": "promo_pick_channel",
      "title": "Pick the next channel to spotlight, round-robin",
      "topics": [
        "promo_pick_channel"
      ]
    },
    {
      "page": "question_coding_declined_count",
      "title": "Count coding questions Jinx declined",
      "topics": [
        "question_coding_declined_count"
      ]
    },
    {
      "page": "question_content_gaps",
      "title": "Rank content gaps for the weekly digest",
      "topics": [
        "question_content_gaps"
      ]
    },
    {
      "page": "question_digest_build",
      "title": "Build the weekly question-gap digest text",
      "topics": [
        "question_digest_build"
      ]
    },
    {
      "page": "question_digest_format",
      "title": "Format the weekly question-gap digest as Slack mrkdwn",
      "topics": [
        "question_digest_format"
      ]
    },
    {
      "page": "question_digest_post",
      "title": "Build and post the weekly question-gap digest to Slack",
      "topics": [
        "question_digest_post"
      ]
    },
    {
      "page": "question_downvoted_rank",
      "title": "Rank questions where downvotes exceed upvotes",
      "topics": [
        "question_downvoted_rank"
      ]
    },
    {
      "page": "question_draft_guide_snippet",
      "title": "Draft a proposed Guide answer for a content-gap question",
      "topics": [
        "question_draft_guide_snippet"
      ]
    },
    {
      "page": "question_feedback_format",
      "title": "Format a reaction-feedback summary as a reply",
      "topics": [
        "question_feedback_format"
      ]
    },
    {
      "page": "question_feedback_summary",
      "title": "Summarize reaction-feedback tallies for a Slack workspace",
      "topics": [
        "question_feedback_summary"
      ]
    },
    {
      "page": "question_gaps_rank",
      "title": "Rank content-gap questions by normalized-duplicate count",
      "topics": [
        "question_gaps_rank"
      ]
    },
    {
      "page": "question_log_format",
      "title": "Format a question-log report as markdown",
      "topics": [
        "question_log_format"
      ]
    },
    {
      "page": "question_log_purge",
      "title": "Purge question-log rows past the retention window",
      "topics": [
        "question_log_purge"
      ]
    },
    {
      "page": "question_log_query",
      "title": "Query the anonymous question log",
      "topics": [
        "question_log_query"
      ]
    },
    {
      "page": "question_vote_apply",
      "title": "Apply a reaction vote to the question it answered",
      "topics": [
        "question_vote_apply"
      ]
    },
    {
      "page": "r_challenge_adversarial_check",
      "title": "Adversarially review a candidate challenge",
      "topics": [
        "r_challenge_adversarial_check"
      ]
    },
    {
      "page": "r_challenge_allowed_packages",
      "title": "Packages a generated challenge may rely on",
      "topics": [
        "r_challenge_allowed_packages"
      ]
    },
    {
      "page": "r_challenge_difficulties",
      "title": "Difficulty levels for the weekly R challenge",
      "topics": [
        "r_challenge_difficulties"
      ]
    },
    {
      "page": "r_challenge_difficulty_badge",
      "title": "Slack emoji badge for a difficulty level",
      "topics": [
        "r_challenge_difficulty_badge"
      ]
    },
    {
      "page": "r_challenge_difficulty_label",
      "title": "Human-readable label for a difficulty level",
      "topics": [
        "r_challenge_difficulty_label"
      ]
    },
    {
      "page": "r_challenge_draft_build",
      "title": "Draft a fully verified weekly R challenge",
      "topics": [
        "r_challenge_draft_build"
      ]
    },
    {
      "page": "r_challenge_draft_post",
      "title": "Draft, verify, and propose a weekly R challenge",
      "topics": [
        "r_challenge_draft_post"
      ]
    },
    {
      "page": "r_challenge_format_issue",
      "title": "Format a drafted challenge as a GitHub review issue",
      "topics": [
        "r_challenge_format_issue"
      ]
    },
    {
      "page": "r_challenge_format_slack",
      "title": "Format a challenge as a Slack message",
      "topics": [
        "r_challenge_format_slack"
      ]
    },
    {
      "page": "r_challenge_generate",
      "title": "Ask Workers AI to draft a weekly R challenge",
      "topics": [
        "r_challenge_generate"
      ]
    },
    {
      "page": "r_challenge_issue_title",
      "title": "GitHub issue title for a drafted challenge",
      "topics": [
        "r_challenge_issue_title"
      ]
    },
    {
      "page": "r_challenge_open_issue",
      "title": "Open a proposed challenge issue in the review repo",
      "topics": [
        "r_challenge_open_issue"
      ]
    },
    {
      "page": "r_challenge_parse",
      "title": "Parse a model completion into a structured challenge",
      "topics": [
        "r_challenge_parse"
      ]
    },
    {
      "page": "r_challenge_render_statement",
      "title": "Render a challenge statement as a reprex",
      "topics": [
        "r_challenge_render_statement"
      ]
    },
    {
      "page": "r_challenge_reprex_check",
      "title": "Verify a reference solution against its own tests",
      "topics": [
        "r_challenge_reprex_check"
      ]
    },
    {
      "page": "rag_chunk_id",
      "title": "Stable vector ID for a chunk",
      "topics": [
        "rag_chunk_id"
      ]
    },
    {
      "page": "rag_index_build",
      "title": "Build the Jinx RAG index",
      "topics": [
        "rag_index_build"
      ]
    },
    {
      "page": "random_emoji",
      "title": "Select a random emoji",
      "topics": [
        "random_emoji"
      ]
    },
    {
      "page": "reaction_direction",
      "title": "Classify a Slack reaction as an up- or down-vote",
      "topics": [
        "reaction_direction"
      ]
    },
    {
      "page": "reaction_event_apply",
      "title": "Apply an incoming Slack reaction event",
      "topics": [
        "reaction_event_apply"
      ]
    },
    {
      "page": "reaction_log_increment",
      "title": "Increment the daily reaction-feedback counter for a workspace",
      "topics": [
        "reaction_log_increment"
      ]
    },
    {
      "page": "report_format_markdown",
      "title": "Format a report as markdown",
      "topics": [
        "report_format_markdown"
      ]
    },
    {
      "page": "report_generate",
      "title": "Generate an organization activity report",
      "topics": [
        "report_generate"
      ]
    },
    {
      "page": "review_check_pr_naming",
      "title": "Check file naming conventions in a PR",
      "topics": [
        "review_check_pr_naming"
      ]
    },
    {
      "page": "review_run",
      "title": "Run all PR review automation",
      "topics": [
        "review_run"
      ]
    },
    {
      "page": "rum_collect_analytics",
      "title": "Collect Cloudflare RUM (Web Analytics) traffic data",
      "topics": [
        "rum_collect_analytics"
      ]
    },
    {
      "page": "rum_format_analytics",
      "title": "Format Cloudflare RUM analytics as markdown",
      "topics": [
        "rum_format_analytics"
      ]
    },
    {
      "page": "rum_generate_report",
      "title": "Generate a Cloudflare RUM analytics report",
      "topics": [
        "rum_generate_report"
      ]
    },
    {
      "page": "setup_channel_process",
      "title": "Set up a Slack channel with RLadies+ bookmarks",
      "topics": [
        "setup_channel_process"
      ]
    },
    {
      "page": "short_url",
      "title": "Shorten a URL using the Short.io API",
      "topics": [
        "short_url"
      ]
    },
    {
      "page": "slack_api_call",
      "title": "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.",
      "topics": [
        "slack_api_call"
      ]
    },
    {
      "page": "slack_bot_token",
      "title": "Resolve the bot token for a jinx-operated Slack workspace",
      "topics": [
        "slack_bot_token"
      ]
    },
    {
      "page": "slack_channel_id_lookup",
      "title": "Look up a Slack channel's ID by name",
      "topics": [
        "slack_channel_id_lookup"
      ]
    },
    {
      "page": "slack_channel_index",
      "title": "Index a workspace's public channels",
      "topics": [
        "slack_channel_index"
      ]
    },
    {
      "page": "slack_channel_mention",
      "title": "Resolve a channel name to a Slack <#id|name> mention",
      "topics": [
        "slack_channel_mention"
      ]
    },
    {
      "page": "slack_conversations_open",
      "title": "Open a Slack direct message channel",
      "topics": [
        "slack_conversations_open"
      ]
    },
    {
      "page": "slack_interaction_process",
      "title": "Process a Slack interaction from the invite-approval flow",
      "topics": [
        "slack_interaction_process"
      ]
    },
    {
      "page": "slack_invite_approval_checklist_blocks",
      "title": "Build the post-approval checklist Block Kit card",
      "topics": [
        "slack_invite_approval_checklist_blocks"
      ]
    },
    {
      "page": "slack_invite_batch",
      "title": "Send pending Slack invitations",
      "topics": [
        "slack_invite_batch"
      ]
    },
    {
      "page": "slack_invite_request",
      "title": "Request a Slack invitation for someone not yet on the workspace",
      "topics": [
        "slack_invite_request"
      ]
    },
    {
      "page": "slack_invite_request_blocks",
      "title": "Build the initial Slack invite-request Block Kit card",
      "topics": [
        "slack_invite_request_blocks"
      ]
    },
    {
      "page": "slack_post_message",
      "title": "Post a message to a Slack channel",
      "topics": [
        "slack_post_message"
      ]
    },
    {
      "page": "slack_response_url_post",
      "title": "Reply to a Slack interaction via its 'response_url'",
      "topics": [
        "slack_response_url_post"
      ]
    },
    {
      "page": "slack_subscribe_rss",
      "title": "Post a request to subscribe an RSS feed to a Slack channel",
      "topics": [
        "slack_subscribe_rss"
      ]
    },
    {
      "page": "slack_workspace_for_team",
      "title": "Map a Slack team id to its workspace name",
      "topics": [
        "slack_workspace_for_team"
      ]
    },
    {
      "page": "tags2hash",
      "title": "Convert tags to hashtag string",
      "topics": [
        "tags2hash"
      ]
    },
    {
      "page": "validate_blog_entry",
      "title": "Validate blog entry JSON files against schema",
      "topics": [
        "validate_blog_entry"
      ]
    },
    {
      "page": "validate_directory_entries",
      "title": "Validate directory entry JSON files against schema",
      "topics": [
        "validate_directory_entries"
      ]
    },
    {
      "page": "validate_directory_pr",
      "title": "Post an automated directory review as a PR checklist comment",
      "topics": [
        "validate_directory_pr"
      ]
    },
    {
      "page": "website_collect_analytics",
      "title": "Collect website analytics from Cloudflare Web Analytics",
      "topics": [
        "website_collect_analytics"
      ]
    },
    {
      "page": "website_format_analytics",
      "title": "Format website analytics as markdown",
      "topics": [
        "website_format_analytics"
      ]
    },
    {
      "page": "website_generate_report",
      "title": "Generate a website analytics report",
      "topics": [
        "website_generate_report"
      ]
    },
    {
      "page": "website_merge_pending",
      "title": "Auto-merge PRs with pending label when date matches",
      "topics": [
        "website_merge_pending"
      ]
    },
    {
      "page": "website_publish_report",
      "title": "Publish website analytics as a GitHub issue",
      "topics": [
        "website_publish_report"
      ]
    },
    {
      "page": "welcome_message_render",
      "title": "Render a welcome DM for a newly joined Slack member",
      "topics": [
        "welcome_message_render"
      ]
    },
    {
      "page": "welcome_send",
      "title": "Send a welcome DM to a newly joined Slack member",
      "topics": [
        "welcome_send"
      ]
    }
  ],
  "_readme": "https://github.com/rladies/jinx/raw/main/README.md",
  "_rundeps": [
    "askpass",
    "base64enc",
    "bskyr",
    "bslib",
    "cachem",
    "cli",
    "clipr",
    "cloudflarer",
    "countrycode",
    "cpp11",
    "curl",
    "data.table",
    "digest",
    "dplyr",
    "evaluate",
    "fastmap",
    "fontawesome",
    "fs",
    "generics",
    "gitcreds",
    "glue",
    "highr",
    "htmltools",
    "httr",
    "httr2",
    "ini",
    "jquerylib",
    "jsonlite",
    "jsonvalidate",
    "knitr",
    "lifecycle",
    "lubridate",
    "magick",
    "magrittr",
    "meetupr",
    "memoise",
    "mime",
    "opengraph",
    "openssl",
    "pillar",
    "pkgconfig",
    "purrr",
    "R6",
    "rappdirs",
    "Rcpp",
    "rlang",
    "rlist",
    "rmarkdown",
    "rstudioapi",
    "rtoot",
    "rvest",
    "S7",
    "sass",
    "selectr",
    "stringi",
    "stringr",
    "sys",
    "tibble",
    "tidyr",
    "tidyselect",
    "timechange",
    "tinytex",
    "utf8",
    "V8",
    "vctrs",
    "withr",
    "xfun",
    "XML",
    "xml2",
    "yaml"
  ],
  "_vignettes": [
    {
      "source": "jinx.Rmd",
      "filename": "jinx.html",
      "title": "Getting started with Jinx",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-05-13 22:54:51",
      "modified": "2026-07-18 14:40:12",
      "commits": 2
    },
    {
      "source": "workflows.Rmd",
      "filename": "workflows.html",
      "title": "Operating Jinx",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-03-07 11:24:07",
      "modified": "2026-07-18 14:40:12",
      "commits": 11
    },
    {
      "source": "slack-app.Rmd",
      "filename": "slack-app.html",
      "title": "The Jinx Slack app",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-05-12 22:23:36",
      "modified": "2026-07-18 14:40:12",
      "commits": 5
    }
  ],
  "_score": 4.3222192947339195,
  "_indexed": true,
  "_nocasepkg": "jinx",
  "_universes": [
    "rladies"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.0.9006",
      "date": "2026-10-04T13:29:00.000Z",
      "distro": "resolute",
      "commit": "4c2d1be1048286e7184633e16113b1a037557d5f",
      "fileid": "https://r2.ropensci.org/c3a596417de183b934461cffc89823d3bf512b9fe969ce340e47fc8ee1470b6f",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rladies/actions/runs/37205441238"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.2.0.9006",
      "date": "2026-10-04T13:28:51.000Z",
      "distro": "resolute",
      "commit": "4c2d1be1048286e7184633e16113b1a037557d5f",
      "fileid": "https://r2.ropensci.org/01c20cdcd512024a04bef3505f939749b6a8ee44061d5eb73f6ad85f75b118e4",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rladies/actions/runs/37205441238"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.0.9006",
      "date": "2026-10-04T13:31:37.000Z",
      "commit": "4c2d1be1048286e7184633e16113b1a037557d5f",
      "fileid": "https://r2.ropensci.org/83188faef41200400b4a4d16a927282f3cfc86b89bc8bf0afffbc53b83096b38",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rladies/actions/runs/37205441238"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.2.0.9006",
      "date": "2026-10-04T13:31:10.000Z",
      "commit": "4c2d1be1048286e7184633e16113b1a037557d5f",
      "fileid": "https://r2.ropensci.org/3c1fdfde6db279b257b92fd0ab269359a341359f99fac59437e339bbe8bcb79e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rladies/actions/runs/37205441238"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.0.9006",
      "date": "2026-10-04T13:29:08.000Z",
      "commit": "4c2d1be1048286e7184633e16113b1a037557d5f",
      "fileid": "https://r2.ropensci.org/8c2978bc27618cc05a9f7f2a98ede1df514cbdedb9267282d29aa836637199aa",
      "status": "success",
      "buildurl": "https://github.com/r-universe/rladies/actions/runs/37205441238"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.0.9006",
      "date": "2026-10-04T13:28:05.000Z",
      "commit": "4c2d1be1048286e7184633e16113b1a037557d5f",
      "fileid": "https://r2.ropensci.org/de04f2ed1b32612418655258cd3e59252380ed3ab9ad15cf9b270c52fffb95e3",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rladies/actions/runs/37205441238"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.2.0.9006",
      "date": "2026-10-04T13:28:08.000Z",
      "commit": "4c2d1be1048286e7184633e16113b1a037557d5f",
      "fileid": "https://r2.ropensci.org/b5013513966475a595c16918d4fcea0d252da26ccf74ce0e8bfed83fe7a2468c",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rladies/actions/runs/37205441238"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.2.0.9006",
      "date": "2026-10-04T13:28:21.000Z",
      "commit": "4c2d1be1048286e7184633e16113b1a037557d5f",
      "fileid": "https://r2.ropensci.org/1108c95a205e182b14716d5f692ac57fa58fb16309073b07cb21e2a5f5e928d1",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rladies/actions/runs/37205441238"
    }
  ]
}