PKU harness
Ecosystem

Contributing

How to contribute plugins, app changes, protocol notes and documentation to PKU harness, and the conventions, security rules and license that apply.

PKU harness is developed in public for the PKU community. Every repository accepts issues and pull requests. This page explains which repository to use for each kind of change and what we expect from a contribution.

Where to contribute

The right repository depends on what you want to change.

  • Connecting a campus service or adding a capability. This is usually done with a plugin document. If your plugin needs its own server, write a remote plugin in your own repository. Official plugins live in pku-harness-plugins; please open an issue there before you start. See Build a plugin.
  • Listing a plugin. See Marketplace.
  • Fixing or improving the app. Use pku-harness. Read AGENTS.md, docs/ARCHITECTURE.md and docs/DESIGN.md first.
  • Documenting or fixing a campus protocol. Use pkucli.
  • Improving these docs. Use pkuharness-website. The pages are in content/docs/, and every page has an edit link.

Conventions

  • Use bun for all JavaScript and TypeScript (bun install, bun run, bun test, bunx).
  • Keep commits small and follow Conventional Commits, for example feat(wallet): …, fix(treehole): … or docs: ….
  • Before you open a pull request in the plugins repository or the app, run bun run verify and make sure it passes. It runs the same checks as continuous integration (CI). In the plugins repository these are the typecheck, registry validation, the bundled-documents check and every test. In the app they are the typecheck, lint and tests.
  • If you change the UI, check it on a device or emulator in both the dark and the light theme.
  • Plugin changes are merged into pku-harness-plugins first. The app then commits an update of its plugins/ submodule.
  • Campus protocols are ported from pkucli. Cite the source file in a comment.
  • Docs and code comments are written in English. Text shown to users is written in Chinese first, and every such string also needs an English translation.

Using AI agents

The repositories are designed to be worked on by people and coding agents together. Each one has an AGENTS.md (or CLAUDE.md) file with its rules. If you write a plugin with an agent, point it at For AI agents and at the Markdown version of these docs (/llms.txt).

You are responsible for what you submit. Review the generated code, run the checks yourself, and never let an agent handle real credentials.

Community

  • Discuss ideas and report bugs in the GitHub issues of the relevant repository.
  • Be kind to others. The app, plugins and website repositories each have a code of conduct (CODE_OF_CONDUCT.md).

Security

Report vulnerabilities privately, following the SECURITY.md of the affected repository. Don't report them in public issues. Also keep real credentials, tokens and personal data out of issues, test fixtures and logs.

License

All repositories use the MIT license. By contributing, you agree that your contribution is released under the same license.

On this page