From 3ad9d8e32778e8edc2e8d701973ed33356587278 Mon Sep 17 00:00:00 2001 From: faisalishfaq2005 Date: Mon, 29 Jun 2026 19:22:18 +0500 Subject: [PATCH] chore: add issue/PR templates and code of conduct Adds GitHub community health files to lower the barrier to contribution: - Issue forms: bug report, cookbook loop, feature request - config.yml routing questions to Discussions - Pull request template with the CONTRIBUTING checklist - Contributor Covenant 2.1 code of conduct Co-Authored-By: Claude Opus 4.8 --- .github/ISSUE_TEMPLATE/bug_report.yml | 69 ++++++++++ .github/ISSUE_TEMPLATE/config.yml | 11 ++ .github/ISSUE_TEMPLATE/feature_request.yml | 38 ++++++ .github/ISSUE_TEMPLATE/loop_contribution.yml | 55 ++++++++ .github/PULL_REQUEST_TEMPLATE.md | 27 ++++ CODE_OF_CONDUCT.md | 133 +++++++++++++++++++ 6 files changed, 333 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 .github/ISSUE_TEMPLATE/loop_contribution.yml create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 CODE_OF_CONDUCT.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..c98d8d0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,69 @@ +name: Bug report +description: Something in LoopFlow didn't work as expected. +title: "[bug]: " +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to file a bug. The single most useful thing + you can include is the `claude --resume ` transcript of the + step that misbehaved — every step prints its session id. + - type: textarea + id: what-happened + attributes: + label: What happened? + description: What did you expect, and what happened instead? + placeholder: I ran `loopflow run test-and-fix` and … + validations: + required: true + - type: textarea + id: command + attributes: + label: Command you ran + render: shell + placeholder: loopflow run test-and-fix --verbose + validations: + required: true + - type: textarea + id: loop-yaml + attributes: + label: Loop YAML + description: The loop definition you ran (redact anything sensitive). + render: yaml + validations: + required: false + - type: input + id: os + attributes: + label: OS + placeholder: "Windows 11 / macOS 14 / Ubuntu 22.04" + validations: + required: true + - type: input + id: node-version + attributes: + label: Node version + description: Output of `node --version`. + placeholder: v20.11.0 + validations: + required: true + - type: input + id: claude-version + attributes: + label: Claude Code version + description: Output of `claude --version`. + placeholder: 1.0.0 + validations: + required: true + - type: textarea + id: transcript + attributes: + label: Session transcript / logs + description: > + If a step behaved strangely, paste the relevant part of its + `claude --resume ` transcript, or run with `--verbose` + and paste the output. + render: shell + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..924d43c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,11 @@ +blank_issues_enabled: false +contact_links: + - name: Question or help + url: https://github.com/faisalishfaq2005/loopflow/discussions/categories/q-a + about: Ask how to use LoopFlow, scheduling, prompt tuning — anything that isn't a bug. + - name: Share a loop (Show & Tell) + url: https://github.com/faisalishfaq2005/loopflow/discussions/categories/show-and-tell + about: Post a loop that worked for you — the cookbook starts here. + - name: Ideas & roadmap + url: https://github.com/faisalishfaq2005/loopflow/discussions/categories/ideas + about: Discuss larger design ideas before they become issues. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..e9e312f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,38 @@ +name: Feature request +description: Suggest a new capability or improvement. +title: "[feature]: " +labels: ["enhancement"] +body: + - type: markdown + attributes: + value: | + LoopFlow is deliberately a thin orchestrator around `claude -p`. + Before proposing engine code, consider whether the idea could be a + **loop** instead — features that can be a loop should be a loop. + - type: textarea + id: problem + attributes: + label: What problem would this solve? + description: Describe the situation that's painful today. + validations: + required: true + - type: textarea + id: proposal + attributes: + label: Proposed solution + description: What should LoopFlow do? A CLI sketch or example YAML helps. + validations: + required: true + - type: textarea + id: alternatives + attributes: + label: Alternatives considered + validations: + required: false + - type: checkboxes + id: scope + attributes: + label: Scope + options: + - label: I've checked this isn't already on the roadmap in the README. + - label: This can't reasonably be expressed as a loop instead of engine code. diff --git a/.github/ISSUE_TEMPLATE/loop_contribution.yml b/.github/ISSUE_TEMPLATE/loop_contribution.yml new file mode 100644 index 0000000..8149fe9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/loop_contribution.yml @@ -0,0 +1,55 @@ +name: Loop contribution (cookbook) +description: Share a loop that solved a real problem for you. +title: "[loop]: " +labels: ["loop", "good first issue"] +body: + - type: markdown + attributes: + value: | + The most valuable contribution to LoopFlow is a loop that solved a real + problem. Use this to propose one — or open a PR directly per + [CONTRIBUTING.md](../blob/main/CONTRIBUTING.md). Loops with a + verification gate are strongly preferred. + - type: input + id: loop-name + attributes: + label: Loop name + description: kebab-case; will become loops/.yaml + placeholder: changelog-sync + validations: + required: true + - type: textarea + id: problem + attributes: + label: What problem does it solve? + placeholder: Keeps CHANGELOG.md in sync with merged PRs before a release. + validations: + required: true + - type: textarea + id: loop-yaml + attributes: + label: The loop YAML + render: yaml + validations: + required: true + - type: input + id: cost + attributes: + label: Roughly what does one run cost (USD)? + placeholder: "~$0.40" + validations: + required: false + - type: textarea + id: tuning + attributes: + label: Anything you learned tuning the prompts? + validations: + required: false + - type: checkboxes + id: checks + attributes: + label: Checklist + options: + - label: It has a verification gate (or I explain why it doesn't). + - label: I removed anything specific to my project (paths, tool names, jargon). + - label: It passes `loopflow validate`. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..baf65f1 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,27 @@ + + +## What does this change? + + + +## Type of change + +- [ ] Bug fix +- [ ] New feature / enhancement +- [ ] Cookbook loop (`loops/.yaml`) +- [ ] Docs only + +## Checklist + +- [ ] `npm test` passes (vitest, runs in <1s). +- [ ] `npm run typecheck` and `npm run build` pass. +- [ ] Every behavior change comes with a test (the runner is testable without + invoking Claude — inject a fake via `RunOptions.invoke`). +- [ ] No new runtime dependencies (or I opened an issue to discuss it first). +- [ ] Pure functions (prompt composition, verdict parsing, validation) stayed pure. + + diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..6c4202d --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,133 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official email address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +**xevnextechnologies@gmail.com**. + +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations