3.7 KiB
3.7 KiB
Instructions for Labyricorn publishing content
These instructions apply to the entire .labyricorn/ directory. More specific
instructions in project/AGENTS.md and devlog/AGENTS.md also apply within
those directories.
Purpose and ownership
- This directory is the repository-owned source for Thinkloom's exhibition page and development log on Labyricorn.
- The Thinkloom repository is authoritative for this content. The Labyricorn site imports it as read-only content.
- Read
.labyricorn/README.mdand the nearest scopedAGENTS.mdbefore editing a publishing record. - Keep publishing changes focused. Do not alter application code merely to support an exhibition or devlog edit unless the user separately requests it.
Authorization and communication
- When the user says discussion only, do not edit files, run mutating commands, commit, push, request synchronization, or change external systems.
- An implementation request authorizes only its clearly stated scope. Ask before changing project identity, content structure, schema, publication status, or synchronization behavior.
- Do not commit or push unless the user explicitly requests it.
- Before pushing, explain that the pushed publishing content may be imported into the public Labyricorn site.
- Preserve unrelated and uncommitted work. Never discard changes to obtain a clean worktree.
Content contract
- Use native Lektor records named
contents.lr. - Preserve
schema_version: 1until a coordinated schema migration is approved in both the project and Labyricorn site repositories. - Do not add templates, models, plugins, workflows, executable files, generated
builds, or application state below
.labyricorn/. - Keep attachments inside the record subtree that owns them.
- Use UTF-8 text,
YYYY-MM-DDdates, and stable lowercase hyphenated slugs. - Do not use raw HTML, scripts, embedded credentials, or active third-party content in Markdown fields.
- Treat published URLs as durable. Ask before renaming or removing a published record; redirects or archival behavior may be required first.
Security and synchronization
- Never store or print passwords, API tokens, refresh credentials, private keys,
.netrccontents, or other secrets in this directory. - Never place a refresh credential in a URL, query string, tracked script, or command example.
- Do not claim that content is public merely because a push succeeded. Report push status and synchronization/publication status separately.
- After an explicitly authorized push that changes
.labyricorn/, request at most one refresh through the site repository's documented Giteaworkflow_dispatchendpoint. UsePOSTwith{"ref":"main"}and anAuthorization: token ...header supplied from the approvedLABYRICORN_REFRESH_TOKENenvironment or credential store. - The endpoint is
https://git.labyricorn.com/api/v1/repos/Labyricorn/labyricorn-site/actions/workflows/deploy.yml/dispatches. Never place its credential in the URL, this repository, anAGENTS.mdfile, output, or logs. If the credential is unavailable, do not improvise: the scheduled synchronization runs every 30 minutes. - A successful dispatch only queues synchronization. Verify the Action result and the imported revision on the public project page before reporting that publication completed.
Validation and handoff
- Parse every changed
contents.lrfile with Lektor's native record parser. - Confirm required fields are present and referenced source commits exist.
- Run
git diff --checkand review the exact diff before committing. - At handoff, report changed publishing records, validation performed, commit and push status, and synchronization status if known.