Thanks for your interest in contributing to PaperKit! This guide outlines a standard GitHub-driven flow: discuss → issue → backlog → fork → branch → PR → review → merge.
-
Discuss
- Use Discussions for questions, ideas, and design proposals.
-
Open an Issue
- Use templates for Bug Reports or Feature Requests.
- Provide clear context, steps to reproduce (for bugs), and desired outcomes.
-
Backlog & Triage
- Issues are labeled (e.g.,
bug,enhancement,docs,good first issue) and, when relevant, assigned to a milestone. - If your issue is accepted, it becomes part of the public backlog.
- Issues are labeled (e.g.,
-
Fork & Clone
git fork https://github.com/peternicholls/PaperKit.git git clone https://github.com/<your-username>/PaperKit.git cd PaperKit
-
Create a Branch
- Use concise, descriptive names:
feature/latex-audit-toolsfix/lint-latex-errordocs/quickstart-refactor
git checkout -b feature/your-branch-name
- Use concise, descriptive names:
-
Set Up Environment
python3 -m venv .venv source .venv/bin/activate # If tools need dependencies, add them to requirements and document it
-
Implement Changes
- Edit the canonical sources in
.paperkit/(agents, tools, manifests), then regenerate IDE files:
./paperkit generate
- Keep changes focused (one issue/feature per branch).
- Edit the canonical sources in
-
Run Checks
- LaTeX lint & build:
./.paperkit/tools/lint-latex.sh ./.paperkit/tools/build-latex.sh
- Validate structure & schemas:
python3 ./.paperkit/tools/validate-structure.py ./paperkit validate
-
Commit Cleanly
- Write descriptive messages explaining what and why:
git commit -m "Docs: clarify Quick Start install/regenerate flow" git commit -m "Tools: add citation completeness check"
-
Push & Open a PR
git push origin <branch>- In the PR, include:
- Motivation and summary
- Linked issues (
Fixes #123) - Testing/validation notes
- Breaking changes (if any)
- Review & Merge
- Maintainers review for clarity, scope, and correctness.
- Address feedback; keep the PR focused.
- Once approved, it will be merged.
- Python: PEP 8, clear names, small functions.
- Bash: Validate with
shellcheck; keep output readable. - Markdown: GitHub Flavored Markdown; concise, actionable.
- YAML: 2-space indentation; document fields.
- Edit agent, workflow, and tool definitions in
.paperkit/. - Regenerate IDE files after changes:
./paperkit generate. - Prefer small, reviewable changes that preserve structure.
- One logical change per commit (or a short series).
- Reference issues in the commit/PR.
- Keep the history clean and easy to follow.
./.paperkit/tools/lint-latex.sh
./.paperkit/tools/build-latex.sh
python3 ./.paperkit/tools/validate-structure.py
./paperkit validate- In VS Code, use Copilot Chat and the generated
.github/agents/files. - For Codex, use
.codex/prompts/(generated from.paperkit/).
- Linked issue(s) and clear motivation
- Focused scope (one feature/fix)
- Code/docs follow style guidelines
- Local checks pass (lint, build, validate)
- Updated docs where relevant
- Use the Bug Report and Feature Request templates.
- Provide clear repro steps (for bugs) and concrete outcomes (for features).
- Add logs/screenshots where helpful.
- Semantic versioning is used (MAJOR.MINOR.PATCH).
- Pre-release tags like
alpha-*/beta-*may appear during development. - See VERSION for current version.
PaperKit uses two-layer authorization for releases:
- Local checks in
./paperkit-devscript (developer convenience) - Service-side enforcement via GitHub Actions (security)
For Contributors:
- You can propose version bumps in PRs
- Only authorized maintainers can create releases
- All releases require approval via GitHub's protected environments
For Maintainers:
- See dev-docs/service-side-authorization.md for setup
- See dev-docs/setup-authorization.md for quick reference
- Use
./paperkit-devfor local version management - Releases require approval on GitHub (cannot be bypassed)
- Be respectful and constructive.
- Assume good intent; welcome diverse perspectives.
- Share context and learnings.
- Start with the README and docs in
.paperkit/docs/. - Ask in Discussions.
- Open an issue if you’re blocked.
By contributing to PaperKit, you agree that your contributions are licensed under MIT.
Thank you for helping improve academic paper workflows! 🎓✨