Skip to content

Add README.md following DPC conventions - #10

Merged
dmccoystephenson merged 2 commits into
mainfrom
feature/add-readme
Aug 19, 2026
Merged

Add README.md following DPC conventions#10
dmccoystephenson merged 2 commits into
mainfrom
feature/add-readme

Conversation

@dmccoystephenson

Copy link
Copy Markdown
Member

Summary

  • A README.md is added. The repository previously had none, so its GitHub landing page showed nothing at all.
  • The section structure is taken from the DPC conventions as applied in an aligned sibling plugin of comparable scope, Dans-Plugins/NoMoreCreepers: Description, Installation, Usage (with links to the existing documentation files), Support, Contributing, Testing, Development, Authors and Acknowledgement, License, Project Status.
  • Every section describes this repository as it actually stands rather than repeating a template. In particular:
    • Testing states plainly that no test suite and no build system exist, and that the Build workflow checks the repository out and does nothing further — so a green check confirms only that the repository could be cloned. It compiles nothing and runs nothing.
    • Development documents the flat source layout, the manual javac/jar packaging steps that stand in for a build tool, and an on-server validation checklist.
    • No bStats section is included, because no bStats integration exists in the source (Main.java imports only org.bukkit.* types).
  • No source file, manifest, workflow, or existing document is touched. The diff is one new file, 102 lines.

Validation

The mechanical consistency checks were run on the PR head, and their output is recorded below.

Check Result
grep -n '^main:' plugin.yml main: me.Daniel.FlyCommand.Main
grep -n '^package ' me/Daniel/FlyCommand/Main.java package me.Daniel.FlyCommand;
grep -n 'public class ' me/Daniel/FlyCommand/Main.java public class Main extends JavaPlugin {
grep -n 'equalsIgnoreCase(' me/Daniel/FlyCommand/Main.java label.equalsIgnoreCase("fly")
grep -n -A5 '^commands:' plugin.yml commands: / Fly:
python3 -c "import yaml; yaml.safe_load(open('plugin.yml'))" parses to {'main': 'me.Daniel.FlyCommand.Main', 'name': 'FlyCommand', 'version': 1.0, 'api-version': 1.13, 'commands': {'Fly': None}}

main: equals <package>.<class> and matches the file's path on disk. The handled label fly has a manifest key (Fly; Bukkit lowercases labels when registering, and the source comparison is case-insensitive).

One check reports a pre-existing disagreement that this PR does not introduce and does not fix: hasPermission("FlyCommand.fly") appears in USER_GUIDE.md, COMMANDS.md and now README.md, but is still absent from plugin.yml. That gap is tracked separately in #5 and is deliberately left for an implementation cycle rather than being smuggled into a documentation change.

No Java behaviour is changed by this PR, so no on-server reproduction recipe is required for the diff itself. Rendering of the new file should be eyeballed on GitHub, and the relative links (USER_GUIDE.md, COMMANDS.md, CONFIG.md, CHANGELOG.md, CONTRIBUTING.md, LICENSE, .github/workflows/build.yml) confirmed to resolve — all seven targets exist in the tree.

Note on CI

The green Build check on this pull request is not verification of anything. .github/workflows/build.yml contains a single actions/checkout@v4 step and zero run: steps, so it cannot fail on anything in a diff. This gap is tracked in #9.

Backlog deferred this cycle

Issues filed during triage but not selected, with the reason each was deferred:

Closes #4


This PR description was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener).


drafted by Claude on behalf of Daniel Stephenson

dmccoystephenson and others added 2 commits August 18, 2026 01:39
Adds the repository landing page that was missing, using the section
structure applied by aligned sibling DPC plugins: Description,
Installation, Usage, Support, Contributing, Testing, Development,
Authors and Acknowledgement, License and Project Status.

The Testing and Development sections describe this repository as it
actually stands: no test suite, no build system, a checkout-only Build
workflow that verifies nothing, manual javac/jar packaging steps, and
an on-server validation checklist. No bStats section is included
because no bStats integration exists in the source.

Closes #4

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Describe the linked Discord as the Dans Plugins Community server, which
  is what it demonstrably is across sibling DPC repositories, rather than
  asserting a FlyCommand-specific support server that is not verifiable
  from this repository.
- Note that the jar must be compiled at a release level the target
  server's Java runtime can load, since the manual javac steps otherwise
  produce class files a 1.13 era server rejects.
- Record the new README under [Unreleased] in CHANGELOG.md.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@dmccoystephenson

Copy link
Copy Markdown
Member Author

Self-review

Performed on the PR head (eb0bb43). Each item is scored against a command output or a line of the diff, not against judgment. Three findings were raised on the first pass and fixed in eb0bb43 before this review was posted; they are recorded below rather than hidden.

Findings raised and fixed

  • README.md:31 — the Support section originally read "You can find the support Discord server here" and pointed at https://discord.gg/xXtuAQ2. That link was carried over from the aligned sibling plugins Dans-Plugins/NoMoreCreepers and Dans-Plugins/Medieval-Factions, where it is presented as the community server. Asserting it as FlyCommand's support server is not something this repository supports; nothing here references a Discord at all, and USER_GUIDE.md's own Support section links only the issue tracker. The wording was changed to "the Dans Plugins Community Discord server", which is the claim the sibling repositories actually establish.
  • README.md:66 — the manual build steps (javac with no release flag, then jar) produce class files at the compiling JDK's default release level, which a Minecraft 1.13 era server running Java 8 cannot load. A reader following the steps verbatim on a modern JDK would get a jar that fails at load with no obvious cause. A sentence recommending --release 8 for that target was added.
  • CHANGELOG.md — no entry had been added under ## [Unreleased]. An ### Added bullet was added in Keep a Changelog form.

Rubric

  • Scope — PASS. git diff --name-only origin/main...HEAD lists exactly CHANGELOG.md and README.md. No source file, manifest, workflow, or unrelated document is touched, and no reformatting of existing content appears in the diff.
  • Validation-new — PASS. The new content is documentation, and every factual claim in it is backed by a check quoted below or by a file listed in the tree. The one behavioural section (Manual Validation on a Test Server) is itself the validation step, and it names the server type, the account states, and the expected outcome per step.
  • Validation-fix — NOT APPLICABLE. This PR fixes no bug and changes no behaviour, so there is no defect for a stash-and-run experiment to observe.
  • Sibling structure — PASS. The root documents use # Title followed by ## Section headings with a blank line after each (grep -n '^#' USER_GUIDE.md COMMANDS.md CONFIG.md CONTRIBUTING.md CHANGELOG.md), and the new file follows the same shape. Its section list matches the structure applied by the aligned sibling Dans-Plugins/NoMoreCreepers. The file is written with LF line endings, matching the other Markdown documents (file *.md reports plain ASCII text for all of them; only plugin.yml and Main.java are CRLF).
  • Sibling renames — PASS. Nothing is renamed by this PR.
  • Docs — PASS. Every row of the documentation sources-of-truth table was re-checked against the implementation: plugin.yml is untouched and its main, version and api-version values all match what the README states; USER_GUIDE.md and COMMANDS.md agree with the README on the command name and permission node; CONFIG.md's "no config.yml" claim is echoed accurately by the README's "there is no configuration file"; CONTRIBUTING.md's workflow is unchanged and is linked rather than duplicated; .github/copilot-instructions.md was read but not modified, and its stack, build-tool and project-structure claims are all still true and are now restated consistently in the README.
  • Issue resolution — PASS. Add a README.md following DPC conventions #4 asks for a README.md following DPC conventions, with Testing and Development describing the repository as it actually stands and with no fabricated bStats section. All three conditions are met by the diff.
  • Manual validation — PASS, with one pre-existing failure explicitly not caused by this PR. Outputs on the PR head:
    • grep -n '^main:' plugin.ymlmain: me.Daniel.FlyCommand.Main
    • grep -n '^package ' me/Daniel/FlyCommand/Main.javapackage me.Daniel.FlyCommand;
    • grep -n 'public class ' me/Daniel/FlyCommand/Main.javapublic class Main extends JavaPlugin {
    • grep -n 'equalsIgnoreCase(' me/Daniel/FlyCommand/Main.javalabel.equalsIgnoreCase("fly")
    • grep -n -A5 '^commands:' plugin.ymlcommands: / Fly:
    • python3 -c "import yaml; yaml.safe_load(open('plugin.yml'))"{'main': 'me.Daniel.FlyCommand.Main', 'name': 'FlyCommand', 'version': 1.0, 'api-version': 1.13, 'commands': {'Fly': None}}
    • grep -n 'FlyCommand.fly' plugin.yml USER_GUIDE.md COMMANDS.md README.md → matched in USER_GUIDE.md:21, COMMANDS.md:5, README.md:79, and not in plugin.yml. This is the pre-existing manifest gap tracked in plugin.yml declares no permissions block and no command metadata #5; it is neither introduced nor fixed here, and it was deliberately kept out of a documentation-only change.

Repo-specific rubric

  • Manifest declaration — PRE-EXISTING FAIL, out of scope. FlyCommand.fly is still undeclared in plugin.yml. Unchanged by this PR and tracked in plugin.yml declares no permissions block and no command metadata #5.
  • Command declaration — PASS. The only label compared in equalsIgnoreCase(...) is fly, and commands: carries the key Fly; Bukkit lowercases labels when registering and the source comparison is case-insensitive.
  • Main-class resolution — PASS. main: me.Daniel.FlyCommand.Main equals package me.Daniel.FlyCommand plus class Main, and the file sits at me/Daniel/FlyCommand/Main.java.
  • Override annotations — PRE-EXISTING FAIL, out of scope. onCommand still carries no @Override; unchanged here and tracked in onCommand is missing the @Override annotation #7.
  • No stack change — PASS. The diff adds no pom.xml, no build.gradle, no src/main/java directory and no dependency. The README documents the manual javac/jar route precisely so that no build system is implied.
  • Changelog — PASS after the fix above; an ### Added bullet now sits under ## [Unreleased].
  • No harness leakage — PASS. git diff --name-only origin/main...HEAD lists no .claude/ path.

Merge readiness

No path in this diff matches the do-not-auto-merge list — Main.java, plugin.yml, .github/workflows/* and LICENSE are all untouched — and no file loses more than 50 lines. The change is nonetheless not merged by this session, which holds no merge authorization; the pull request is left open for a maintainer.

The green Build check on this pull request is not evidence of anything. .github/workflows/build.yml contains one actions/checkout@v4 step and zero run: steps, so it cannot fail on any diff. The verification that stands behind this pull request is the mechanical output quoted above, nothing more.


This review comment was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener).


drafted by Claude on behalf of Daniel Stephenson

@dmccoystephenson
dmccoystephenson merged commit 2bc6ef7 into main Aug 19, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add a README.md following DPC conventions

1 participant