my_bundle/contributing.mdtype: Guide

One prerequisite: the .NET SDK.

That's the whole list. OKF4net has zero third-party runtime dependencies by design — please keep it that way (test-only packages like xunit are fine).

##

Where to start

new here?

Pick an issue labelled good first issue — scoped, names the files, states how to verify. Bigger idea? See the roadmap below, or open a Discussion first.

##

Roadmap

now · next · later
  • Now: broader test coverage and tutorials, for library users and agent builders alike.
  • Next: more Agent Framework samples, performance baselines, a bundle viewer. The first Catalog sample has shipped.
  • Later: ecosystem integrations, tracking the spec past v0.2, and growing producers/OkfProducer — an early, repo-scanning bundle generator — past its first walking-skeleton slice.
##

Build and test

warnings are errors
$ dotnet build OKF4net.sln            # core library + okf CLI + test project
$ dotnet test OKF4net.sln             # unit + integration tests (incl. golden CLI comparisons)
$ dotnet publish src/OKF4net.Cli -c Release   # Native AOT, self-contained okf binary

All warnings are treated as errors, so a clean build is required.

GOLDEN FIXTURES — DO NOT REFORMAT

tests/fixtures/golden/ holds snapshots of this project's own CLI output, compared as text (after path-separator normalisation for the outputs that embed paths). They are regenerable under two regimes stated in tests/fixtures/README.md: a presentation-only diff is regenerated through the scoped update mode and reviewed; a semantic diff, or any edit to an input bundle, needs explicit arbitration and a dated entry first. Conformance is verified against the spec by tests that cite a §, not by these files. They are protected by .gitattributes and excluded from .editorconfig normalization — never let an editor or formatter touch them: trailing whitespace, final newlines, and line endings are all significant.

##

Code style

enforced in CI
  • Formatting is enforced with dotnet format --verify-no-changes; run dotnet format OKF4net.sln before pushing.
  • Follow the existing conventions: file-scoped namespaces, XML doc comments on public API, nullable reference types enabled.
  • New source files need the SPDX header used across the codebase: // SPDX-License-Identifier: LGPL-3.0-or-later
##

Spec fidelity

cite your §

OKF4net implements the OKF v0.2 spec. Behavioural changes must stay conformant — cite the relevant section (§) in your PR description. The spec is the authority; where this implementation deliberately reads it differently, or departs from the OKF reference implementation's behaviour, the reason is recorded in docs/spec-conformance/.

##

Submitting changes

the suite is the contract
  1. Fork and create a topic branch from main.
  2. Add or update tests for any behaviour change — the test suite is the contract, including golden comparisons for CLI-visible output.
  3. Make sure dotnet test and dotnet format --verify-no-changes pass.
  4. Open a pull request with a clear description of the what and why.

Bug reports and feature requests go through GitHub issues; please use the provided templates. By contributing, you agree that your contributions are licensed under the project license, LGPL-3.0-or-later.

Ship knowledge as files.

The spec is short, the codebase is dependency-free, and the test suite tells you immediately whether you're right.