toolspace › registry › Muninn perch_publish
Muninn perch_publish
Publish a perch flight log (GitHub discussion) to muninn.austegard.com/perch/ as HTML, updating the perch index and Atom feed.
Install
install-manifest install https://raw.githubusercontent.com/oaustegard/muninn-utilities/main/manifests/perch-publish/muninn-perch-publish.v0.4.json
manifest JSON · source · docs · issues · homepage
Security
| Kill switch | manual Manual procedure: — |
|---|---|
| Smoke contract | shell timeout 10s |
Scopes
-
github.repo.contentsread, write github-pat (coarse; full account write access)Reads existing perch entries from oaustegard/muninn.austegard.com to rebuild the index and feed; writes the new page, the updated index, and the updated feed in a single commit. Lands directly on main with no PR.
-
github.discussionsread github-pat (coarse)Fetches the discussion body and metadata from oaustegard/claude-skills via the GraphQL API.
-
net.outboundread, write api.github.com, raw.githubusercontent.com, muninn.austegard.comapi.github.com for GraphQL discussion read and REST commits; raw.githubusercontent.com (or api.github.com/contents) for reading existing perch index entries.
Data boundary
Reads
github.discussionssensitivity: lowgithub.repo.contentssensitivity: low
Transmits
-
api.github.com none-per-vendor-tos
fetch discussion body (read) and commit rendered page + index + feed (write)
env.GH_TOKENinput.number
Actions
-
publish_flight_log destructive
Render a GitHub discussion as a perch page on muninn.austegard.com and update the perch index + Atom feed. ·
github.repo.contentsgithub.discussionsnet.outbound- Goal
- Publish a perch flight log discussion as a public HTML page.
- Inputs
number (req: discussion #), repo (default oaustegard/muninn.austegard.com)- Outputs
{url, slug, commit_sha}- Errors
auth_invalid, discussion_not_found, commit_failed- Example
publish_flight_log number=430
Environment
GH_TOKEN |
GitHub personal access token. Needs read access to oaustegard/claude-skills (to fetch the discussion via GraphQL) AND write access to oaustegard/muninn.austegard.com (to commit the rendered page, index, and feed). Same coarse credential as blog_publish, issue_close, perch_triage, verify_patch — share-by-default is intentional. Falls back to GITHUB_TOKEN if GH_TOKEN is not set. required · secret: yes · obtain |
|---|---|
GITHUB_TOKEN |
Optional fallback for GH_TOKEN. The source reads `os.environ.get('GH_TOKEN') or os.environ.get('GITHUB_TOKEN')`. optional · secret: yes · obtain |
Verify & cost
| Install fee | 0¢ |
|---|---|
| Monthly fee | 0¢ |
| Usage model | external |
Runtime
runtime: python-module · install method: preinstalled · entrypoint: python -m muninn_utils.perch_publish
Fetches a discussion via the GitHub GraphQL API, converts the markdown body to HTML, slugifies the title, and commits three files in one batch (the rendered page under perch/, the regenerated index.html, the regenerated feed.xml). Reads existing entries from the live site to merge the new one into the index/feed without re-fetching every prior discussion. Same primary credential as `blog_publish` and `issue_close` (GH_TOKEN), and the GH_TOKEN must have access to BOTH oaustegard/claude-skills (read discussions) and oaustegard/muninn.austegard.com (write commits).
Tags: publishinggithub-pagesatom-feedperchdiscussions
License: MIT
Last fetched 2026-06-18T09:09:16Z (live)