Hugoifier
chore: add OSS community health files (LICENSE, CoC, CONTRIBUTING, SECURITY, issue templates, PR template)
Commit
742e5d38136ad2f9d93a428f68b0f184ebe80eeea11a05e5b046d7108a1bf267
Parent
45626e1993375b3…
8 files changed
+44
+92
+92
+5
+37
+22
+40
+21
| --- a/.github/CODE_OF_CONDUCT.md | ||
| +++ b/.github/CODE_OF_CONDUCT.md | ||
| @@ -0,0 +1,44 @@ | ||
| 1 | +# Code of Conduct | |
| 2 | + | |
| 3 | +## Our Pledge | |
| 4 | + | |
| 5 | +We as members, contributors, and maintainers pledge to make participation in Hugoifier a welcoming experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. | |
| 6 | + | |
| 7 | +## Our Standards | |
| 8 | + | |
| 9 | +**Expected behavior:** | |
| 10 | + | |
| 11 | +- Using welcoming and inclusive language | |
| 12 | +- Being respectful of differing viewpoints and experiences | |
| 13 | +- Gracefully accepting constructive criticism | |
| 14 | +- Focusing on what is best for the community | |
| 15 | +- Showing empathy toward other community members | |
| 16 | + | |
| 17 | +**Unacceptable behavior:** | |
| 18 | + | |
| 19 | +- Trolling, insulting or derogatory comments, and personal attacks | |
| 20 | +- Public or private unwelcome conduct | |
| 21 | +- Publishing others' private information without explicit permission | |
| 22 | +- Other conduct which could reasonably be considered inappropriate in a professional setting | |
| 23 | + | |
| 24 | +## Responsibilities | |
| 25 | + | |
| 26 | +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. | |
| 27 | + | |
| 28 | +Project maintainers have the right to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned with this Code of Conduct, or to temporarily or permanently ban any contributor for behaviors they deem inappropriate. | |
| 29 | + | |
| 30 | +## Scope | |
| 31 | + | |
| 32 | +This Code of Conduct applies within all project spaces and in public spaces when an individual is representing the project or its community. | |
| 33 | + | |
| 34 | +## Enforcement | |
| 35 | + | |
| 36 | +Instances of unacceptable behavior may be reported by contacting the project team at: | |
| 37 | + | |
| 38 | +**[email protected]** | |
| 39 | + | |
| 40 | +All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. | |
| 41 | + | |
| 42 | +## Attribution | |
| 43 | + | |
| 44 | +This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.1. |
| --- a/.github/CODE_OF_CONDUCT.md | |
| +++ b/.github/CODE_OF_CONDUCT.md | |
| @@ -0,0 +1,44 @@ | |
| --- a/.github/CODE_OF_CONDUCT.md | |
| +++ b/.github/CODE_OF_CONDUCT.md | |
| @@ -0,0 +1,44 @@ | |
| 1 | # Code of Conduct |
| 2 | |
| 3 | ## Our Pledge |
| 4 | |
| 5 | We as members, contributors, and maintainers pledge to make participation in Hugoifier a welcoming experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. |
| 6 | |
| 7 | ## Our Standards |
| 8 | |
| 9 | **Expected behavior:** |
| 10 | |
| 11 | - Using welcoming and inclusive language |
| 12 | - Being respectful of differing viewpoints and experiences |
| 13 | - Gracefully accepting constructive criticism |
| 14 | - Focusing on what is best for the community |
| 15 | - Showing empathy toward other community members |
| 16 | |
| 17 | **Unacceptable behavior:** |
| 18 | |
| 19 | - Trolling, insulting or derogatory comments, and personal attacks |
| 20 | - Public or private unwelcome conduct |
| 21 | - Publishing others' private information without explicit permission |
| 22 | - Other conduct which could reasonably be considered inappropriate in a professional setting |
| 23 | |
| 24 | ## Responsibilities |
| 25 | |
| 26 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. |
| 27 | |
| 28 | Project maintainers have the right to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned with this Code of Conduct, or to temporarily or permanently ban any contributor for behaviors they deem inappropriate. |
| 29 | |
| 30 | ## Scope |
| 31 | |
| 32 | This Code of Conduct applies within all project spaces and in public spaces when an individual is representing the project or its community. |
| 33 | |
| 34 | ## Enforcement |
| 35 | |
| 36 | Instances of unacceptable behavior may be reported by contacting the project team at: |
| 37 | |
| 38 | **[email protected]** |
| 39 | |
| 40 | All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. |
| 41 | |
| 42 | ## Attribution |
| 43 | |
| 44 | This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.1. |
+92
| --- a/.github/CONTRIBUTING.md | ||
| +++ b/.github/CONTRIBUTING.md | ||
| @@ -0,0 +1,92 @@ | ||
| 1 | +# Contributing to Hugoifier | |
| 2 | + | |
| 3 | +Thank you for your interest in contributing to Hugoifier! | |
| 4 | + | |
| 5 | +## Development Setup | |
| 6 | + | |
| 7 | +1. **Fork and clone the repository:** | |
| 8 | + | |
| 9 | + ```bash | |
| 10 | + git clone https://github.com/<your-username>/hugoifier.git | |
| 11 | + cd hugoifier | |
| 12 | + ``` | |
| 13 | + | |
| 14 | +2. **Create a virtual environment:** | |
| 15 | + | |
| 16 | + ```bash | |
| 17 | + python3 -m venv .venv | |
| 18 | + source .venv/bin/activate # On Windows: .venv\Scripts\activate | |
| 19 | + ``` | |
| 20 | + | |
| 21 | +3. **Install dependencies:** | |
| 22 | + | |
| 23 | + ```bash | |
| 24 | + pip install -r requirements.txt | |
| 25 | + pip install ruff pytest | |
| 26 | + ``` | |
| 27 | + | |
| 28 | +4. **Set up at least one AI provider API key:** | |
| 29 | + | |
| 30 | + ```bash | |
| 31 | + export ANTHROPIC_API_KEY="sk-ant-..." | |
| 32 | + # or | |
| 33 | + export OPENAI_API_KEY="sk-..." | |
| 34 | + # or | |
| 35 | + export GOOGLE_API_KEY="..." | |
| 36 | + ``` | |
| 37 | + | |
| 38 | +## Running Tests | |
| 39 | + | |
| 40 | +```bash | |
| 41 | +pytest tests/ | |
| 42 | +``` | |
| 43 | + | |
| 44 | +Tests are written to avoid real AI calls — they mock the `call_ai` function or test pure functions only. Keep it that way. | |
| 45 | + | |
| 46 | +## Code Style | |
| 47 | + | |
| 48 | +This project uses [Ruff](https://docs.astral.sh/ruff/) for linting. | |
| 49 | + | |
| 50 | +```bash | |
| 51 | +# Check for issues | |
| 52 | +ruff check src/ tests/ | |
| 53 | + | |
| 54 | +# Auto-fix | |
| 55 | +ruff check --fix src/ tests/ | |
| 56 | +``` | |
| 57 | + | |
| 58 | +All contributions must pass `ruff check` with no errors before merging. | |
| 59 | + | |
| 60 | +## Commit Conventions | |
| 61 | + | |
| 62 | +Use the imperative mood, prefix with a type: | |
| 63 | + | |
| 64 | +- `fix(module): description` — bug fixes | |
| 65 | +- `feat(module): description` — new features | |
| 66 | +- `docs: description` — documentation only | |
| 67 | +- `test: description` — tests only | |
| 68 | +- `chore: description` — maintenance, deps, tooling | |
| 69 | + | |
| 70 | +Keep subject lines under 72 characters. | |
| 71 | + | |
| 72 | +## Pull Request Process | |
| 73 | + | |
| 74 | +1. Branch from `main` | |
| 75 | +2. Write or update tests for your changes | |
| 76 | +3. Run `pytest tests/` and `ruff check src/ tests/` — both must be clean | |
| 77 | +4. Open a PR against `main` and fill out the template | |
| 78 | +5. A maintainer will review within a few business days | |
| 79 | + | |
| 80 | +## Reporting Bugs and Requesting Features | |
| 81 | + | |
| 82 | +- **Bugs:** [Bug Report](https://github.com/ConflictHQ/hugoifier/issues/new?template=bug_report.yml) | |
| 83 | +- **Features:** [Feature Request](https://github.com/ConflictHQ/hugoifier/issues/new?template=feature_request.yml) | |
| 84 | +- **Questions:** [Discussions](https://github.com/ConflictHQ/hugoifier/discussions) | |
| 85 | + | |
| 86 | +## Security | |
| 87 | + | |
| 88 | +Do **not** open a public issue for security vulnerabilities. See [SECURITY.md](SECURITY.md). | |
| 89 | + | |
| 90 | +## License | |
| 91 | + | |
| 92 | +By contributing to Hugoifier, you agree that your contributions will be licensed under the [MIT License](../LICENSE). |
| --- a/.github/CONTRIBUTING.md | |
| +++ b/.github/CONTRIBUTING.md | |
| @@ -0,0 +1,92 @@ | |
| --- a/.github/CONTRIBUTING.md | |
| +++ b/.github/CONTRIBUTING.md | |
| @@ -0,0 +1,92 @@ | |
| 1 | # Contributing to Hugoifier |
| 2 | |
| 3 | Thank you for your interest in contributing to Hugoifier! |
| 4 | |
| 5 | ## Development Setup |
| 6 | |
| 7 | 1. **Fork and clone the repository:** |
| 8 | |
| 9 | ```bash |
| 10 | git clone https://github.com/<your-username>/hugoifier.git |
| 11 | cd hugoifier |
| 12 | ``` |
| 13 | |
| 14 | 2. **Create a virtual environment:** |
| 15 | |
| 16 | ```bash |
| 17 | python3 -m venv .venv |
| 18 | source .venv/bin/activate # On Windows: .venv\Scripts\activate |
| 19 | ``` |
| 20 | |
| 21 | 3. **Install dependencies:** |
| 22 | |
| 23 | ```bash |
| 24 | pip install -r requirements.txt |
| 25 | pip install ruff pytest |
| 26 | ``` |
| 27 | |
| 28 | 4. **Set up at least one AI provider API key:** |
| 29 | |
| 30 | ```bash |
| 31 | export ANTHROPIC_API_KEY="sk-ant-..." |
| 32 | # or |
| 33 | export OPENAI_API_KEY="sk-..." |
| 34 | # or |
| 35 | export GOOGLE_API_KEY="..." |
| 36 | ``` |
| 37 | |
| 38 | ## Running Tests |
| 39 | |
| 40 | ```bash |
| 41 | pytest tests/ |
| 42 | ``` |
| 43 | |
| 44 | Tests are written to avoid real AI calls — they mock the `call_ai` function or test pure functions only. Keep it that way. |
| 45 | |
| 46 | ## Code Style |
| 47 | |
| 48 | This project uses [Ruff](https://docs.astral.sh/ruff/) for linting. |
| 49 | |
| 50 | ```bash |
| 51 | # Check for issues |
| 52 | ruff check src/ tests/ |
| 53 | |
| 54 | # Auto-fix |
| 55 | ruff check --fix src/ tests/ |
| 56 | ``` |
| 57 | |
| 58 | All contributions must pass `ruff check` with no errors before merging. |
| 59 | |
| 60 | ## Commit Conventions |
| 61 | |
| 62 | Use the imperative mood, prefix with a type: |
| 63 | |
| 64 | - `fix(module): description` — bug fixes |
| 65 | - `feat(module): description` — new features |
| 66 | - `docs: description` — documentation only |
| 67 | - `test: description` — tests only |
| 68 | - `chore: description` — maintenance, deps, tooling |
| 69 | |
| 70 | Keep subject lines under 72 characters. |
| 71 | |
| 72 | ## Pull Request Process |
| 73 | |
| 74 | 1. Branch from `main` |
| 75 | 2. Write or update tests for your changes |
| 76 | 3. Run `pytest tests/` and `ruff check src/ tests/` — both must be clean |
| 77 | 4. Open a PR against `main` and fill out the template |
| 78 | 5. A maintainer will review within a few business days |
| 79 | |
| 80 | ## Reporting Bugs and Requesting Features |
| 81 | |
| 82 | - **Bugs:** [Bug Report](https://github.com/ConflictHQ/hugoifier/issues/new?template=bug_report.yml) |
| 83 | - **Features:** [Feature Request](https://github.com/ConflictHQ/hugoifier/issues/new?template=feature_request.yml) |
| 84 | - **Questions:** [Discussions](https://github.com/ConflictHQ/hugoifier/discussions) |
| 85 | |
| 86 | ## Security |
| 87 | |
| 88 | Do **not** open a public issue for security vulnerabilities. See [SECURITY.md](SECURITY.md). |
| 89 | |
| 90 | ## License |
| 91 | |
| 92 | By contributing to Hugoifier, you agree that your contributions will be licensed under the [MIT License](../LICENSE). |
| --- a/.github/ISSUE_TEMPLATE/bug_report.yml | ||
| +++ b/.github/ISSUE_TEMPLATE/bug_report.yml | ||
| @@ -0,0 +1,92 @@ | ||
| 1 | +name: Bug Report | |
| 2 | +description: Report a bug in Hugoifier | |
| 3 | +title: "[Bug]: " | |
| 4 | +labels: ["bug", "triage"] | |
| 5 | +body: | |
| 6 | + - type: markdown | |
| 7 | + attributes: | |
| 8 | + value: | | |
| 9 | + Thank you for reporting a bug. Please fill out the fields below so we can diagnose and fix the issue quickly. | |
| 10 | + | |
| 11 | + - type: textarea | |
| 12 | + id: description | |
| 13 | + attributes: | |
| 14 | + label: Description | |
| 15 | + description: A clear and concise description of the bug. | |
| 16 | + placeholder: Describe the bug... | |
| 17 | + validations: | |
| 18 | + required: true | |
| 19 | + | |
| 20 | + - type: textarea | |
| 21 | + id: steps-to-reproduce | |
| 22 | + attributes: | |
| 23 | + label: Steps to Reproduce | |
| 24 | + description: The exact steps to reproduce the behavior. | |
| 25 | + placeholder: | | |
| 26 | + 1. Run `python src/cli.py complete themes/my-theme` | |
| 27 | + 2. Observe error during decapify step | |
| 28 | + validations: | |
| 29 | + required: true | |
| 30 | + | |
| 31 | + - type: textarea | |
| 32 | + id: expected-behavior | |
| 33 | + attributes: | |
| 34 | + label: Expected Behavior | |
| 35 | + placeholder: Describe what you expected... | |
| 36 | + validations: | |
| 37 | + required: true | |
| 38 | + | |
| 39 | + - type: textarea | |
| 40 | + id: actual-behavior | |
| 41 | + attributes: | |
| 42 | + label: Actual Behavior | |
| 43 | + placeholder: Describe what actually happened... | |
| 44 | + validations: | |
| 45 | + required: true | |
| 46 | + | |
| 47 | + - type: dropdown | |
| 48 | + id: os | |
| 49 | + attributes: | |
| 50 | + label: Operating System | |
| 51 | + options: | |
| 52 | + - macOS | |
| 53 | + - Linux (Ubuntu/Debian) | |
| 54 | + - Linux (Fedora/RHEL) | |
| 55 | + - Linux (other) | |
| 56 | + - Windows | |
| 57 | + - Other | |
| 58 | + validations: | |
| 59 | + required: true | |
| 60 | + | |
| 61 | + - type: dropdown | |
| 62 | + id: python-version | |
| 63 | + attributes: | |
| 64 | + label: Python Version | |
| 65 | + options: | |
| 66 | + - "3.13" | |
| 67 | + - "3.12" | |
| 68 | + - "3.11" | |
| 69 | + validations: | |
| 70 | + required: true | |
| 71 | + | |
| 72 | + - type: dropdown | |
| 73 | + id: backend | |
| 74 | + attributes: | |
| 75 | + label: AI Backend | |
| 76 | + description: Which backend were you using? | |
| 77 | + options: | |
| 78 | + - Anthropic (default) | |
| 79 | + - OpenAI | |
| 80 | ||
| 81 | + - Not applicable | |
| 82 | + validations: | |
| 83 | + required: true | |
| 84 | + | |
| 85 | + - type: textarea | |
| 86 | + id: logs | |
| 87 | + attributes: | |
| 88 | + label: Logs | |
| 89 | + description: Paste any relevant log output. | |
| 90 | + render: shell | |
| 91 | + validations: | |
| 92 | + required: false |
| --- a/.github/ISSUE_TEMPLATE/bug_report.yml | |
| +++ b/.github/ISSUE_TEMPLATE/bug_report.yml | |
| @@ -0,0 +1,92 @@ | |
| --- a/.github/ISSUE_TEMPLATE/bug_report.yml | |
| +++ b/.github/ISSUE_TEMPLATE/bug_report.yml | |
| @@ -0,0 +1,92 @@ | |
| 1 | name: Bug Report |
| 2 | description: Report a bug in Hugoifier |
| 3 | title: "[Bug]: " |
| 4 | labels: ["bug", "triage"] |
| 5 | body: |
| 6 | - type: markdown |
| 7 | attributes: |
| 8 | value: | |
| 9 | Thank you for reporting a bug. Please fill out the fields below so we can diagnose and fix the issue quickly. |
| 10 | |
| 11 | - type: textarea |
| 12 | id: description |
| 13 | attributes: |
| 14 | label: Description |
| 15 | description: A clear and concise description of the bug. |
| 16 | placeholder: Describe the bug... |
| 17 | validations: |
| 18 | required: true |
| 19 | |
| 20 | - type: textarea |
| 21 | id: steps-to-reproduce |
| 22 | attributes: |
| 23 | label: Steps to Reproduce |
| 24 | description: The exact steps to reproduce the behavior. |
| 25 | placeholder: | |
| 26 | 1. Run `python src/cli.py complete themes/my-theme` |
| 27 | 2. Observe error during decapify step |
| 28 | validations: |
| 29 | required: true |
| 30 | |
| 31 | - type: textarea |
| 32 | id: expected-behavior |
| 33 | attributes: |
| 34 | label: Expected Behavior |
| 35 | placeholder: Describe what you expected... |
| 36 | validations: |
| 37 | required: true |
| 38 | |
| 39 | - type: textarea |
| 40 | id: actual-behavior |
| 41 | attributes: |
| 42 | label: Actual Behavior |
| 43 | placeholder: Describe what actually happened... |
| 44 | validations: |
| 45 | required: true |
| 46 | |
| 47 | - type: dropdown |
| 48 | id: os |
| 49 | attributes: |
| 50 | label: Operating System |
| 51 | options: |
| 52 | - macOS |
| 53 | - Linux (Ubuntu/Debian) |
| 54 | - Linux (Fedora/RHEL) |
| 55 | - Linux (other) |
| 56 | - Windows |
| 57 | - Other |
| 58 | validations: |
| 59 | required: true |
| 60 | |
| 61 | - type: dropdown |
| 62 | id: python-version |
| 63 | attributes: |
| 64 | label: Python Version |
| 65 | options: |
| 66 | - "3.13" |
| 67 | - "3.12" |
| 68 | - "3.11" |
| 69 | validations: |
| 70 | required: true |
| 71 | |
| 72 | - type: dropdown |
| 73 | id: backend |
| 74 | attributes: |
| 75 | label: AI Backend |
| 76 | description: Which backend were you using? |
| 77 | options: |
| 78 | - Anthropic (default) |
| 79 | - OpenAI |
| 80 | |
| 81 | - Not applicable |
| 82 | validations: |
| 83 | required: true |
| 84 | |
| 85 | - type: textarea |
| 86 | id: logs |
| 87 | attributes: |
| 88 | label: Logs |
| 89 | description: Paste any relevant log output. |
| 90 | render: shell |
| 91 | validations: |
| 92 | required: false |
| --- a/.github/ISSUE_TEMPLATE/config.yml | ||
| +++ b/.github/ISSUE_TEMPLATE/config.yml | ||
| @@ -0,0 +1,5 @@ | ||
| 1 | +blank_issues_enabled: false | |
| 2 | +contact_links: | |
| 3 | + - name: Discussions | |
| 4 | + url: https://github.com/ConflictHQ/hugoifier/discussions | |
| 5 | + about: Ask questions, share ideas, or discuss Hugoifier with the community. |
| --- a/.github/ISSUE_TEMPLATE/config.yml | |
| +++ b/.github/ISSUE_TEMPLATE/config.yml | |
| @@ -0,0 +1,5 @@ | |
| --- a/.github/ISSUE_TEMPLATE/config.yml | |
| +++ b/.github/ISSUE_TEMPLATE/config.yml | |
| @@ -0,0 +1,5 @@ | |
| 1 | blank_issues_enabled: false |
| 2 | contact_links: |
| 3 | - name: Discussions |
| 4 | url: https://github.com/ConflictHQ/hugoifier/discussions |
| 5 | about: Ask questions, share ideas, or discuss Hugoifier with the community. |
| --- a/.github/ISSUE_TEMPLATE/feature_request.yml | ||
| +++ b/.github/ISSUE_TEMPLATE/feature_request.yml | ||
| @@ -0,0 +1,37 @@ | ||
| 1 | +name: Feature Request | |
| 2 | +description: Suggest a new feature or improvement for Hugoifier | |
| 3 | +title: "[Feature]: " | |
| 4 | +labels: ["enhancement"] | |
| 5 | +body: | |
| 6 | + - type: markdown | |
| 7 | + attributes: | |
| 8 | + value: | | |
| 9 | + We appreciate your ideas for improving Hugoifier. Please describe your request in detail. | |
| 10 | + | |
| 11 | + - type: textarea | |
| 12 | + id: description | |
| 13 | + attributes: | |
| 14 | + label: Description | |
| 15 | + description: A clear and concise description of the feature you'd like to see. | |
| 16 | + placeholder: Describe the feature... | |
| 17 | + validations: | |
| 18 | + required: true | |
| 19 | + | |
| 20 | + - type: textarea | |
| 21 | + id: use-case | |
| 22 | + attributes: | |
| 23 | + label: Use Case | |
| 24 | + description: What problem does this solve? What workflow does it improve? | |
| 25 | + placeholder: | | |
| 26 | + When converting a theme that has date-organized content (content/blog/2024/post.md), I need... | |
| 27 | + validations: | |
| 28 | + required: true | |
| 29 | + | |
| 30 | + - type: textarea | |
| 31 | + id: proposed-solution | |
| 32 | + attributes: | |
| 33 | + label: Proposed Solution | |
| 34 | + description: If you have ideas on implementation, describe them here. Optional. | |
| 35 | + placeholder: Describe a possible approach... | |
| 36 | + validations: | |
| 37 | + required: false |
| --- a/.github/ISSUE_TEMPLATE/feature_request.yml | |
| +++ b/.github/ISSUE_TEMPLATE/feature_request.yml | |
| @@ -0,0 +1,37 @@ | |
| --- a/.github/ISSUE_TEMPLATE/feature_request.yml | |
| +++ b/.github/ISSUE_TEMPLATE/feature_request.yml | |
| @@ -0,0 +1,37 @@ | |
| 1 | name: Feature Request |
| 2 | description: Suggest a new feature or improvement for Hugoifier |
| 3 | title: "[Feature]: " |
| 4 | labels: ["enhancement"] |
| 5 | body: |
| 6 | - type: markdown |
| 7 | attributes: |
| 8 | value: | |
| 9 | We appreciate your ideas for improving Hugoifier. Please describe your request in detail. |
| 10 | |
| 11 | - type: textarea |
| 12 | id: description |
| 13 | attributes: |
| 14 | label: Description |
| 15 | description: A clear and concise description of the feature you'd like to see. |
| 16 | placeholder: Describe the feature... |
| 17 | validations: |
| 18 | required: true |
| 19 | |
| 20 | - type: textarea |
| 21 | id: use-case |
| 22 | attributes: |
| 23 | label: Use Case |
| 24 | description: What problem does this solve? What workflow does it improve? |
| 25 | placeholder: | |
| 26 | When converting a theme that has date-organized content (content/blog/2024/post.md), I need... |
| 27 | validations: |
| 28 | required: true |
| 29 | |
| 30 | - type: textarea |
| 31 | id: proposed-solution |
| 32 | attributes: |
| 33 | label: Proposed Solution |
| 34 | description: If you have ideas on implementation, describe them here. Optional. |
| 35 | placeholder: Describe a possible approach... |
| 36 | validations: |
| 37 | required: false |
| --- a/.github/PULL_REQUEST_TEMPLATE.md | ||
| +++ b/.github/PULL_REQUEST_TEMPLATE.md | ||
| @@ -0,0 +1,22 @@ | ||
| 1 | +## Summary | |
| 2 | + | |
| 3 | +<!-- Briefly describe what this PR does and why. --> | |
| 4 | + | |
| 5 | +## Type of Change | |
| 6 | + | |
| 7 | +- [ ] Bug fix (non-breaking change that fixes an issue) | |
| 8 | +- [ ] New feature (non-breaking change that adds functionality) | |
| 9 | +- [ ] Documentation update | |
| 10 | +- [ ] Refactor (no functional changes) | |
| 11 | +- [ ] Breaking change (fix or feature that would cause existing functionality to change) | |
| 12 | + | |
| 13 | +## Test Plan | |
| 14 | + | |
| 15 | +<!-- Describe how you tested these changes. Include commands or scenarios. --> | |
| 16 | + | |
| 17 | +## Checklist | |
| 18 | + | |
| 19 | +- [ ] Tests pass (`pytest tests/`) | |
| 20 | +- [ ] Lint is clean (`ruff check src/ tests/`) | |
| 21 | +- [ ] Documentation updated (if applicable) | |
| 22 | +- [ ] Commit messages follow project conventions |
| --- a/.github/PULL_REQUEST_TEMPLATE.md | |
| +++ b/.github/PULL_REQUEST_TEMPLATE.md | |
| @@ -0,0 +1,22 @@ | |
| --- a/.github/PULL_REQUEST_TEMPLATE.md | |
| +++ b/.github/PULL_REQUEST_TEMPLATE.md | |
| @@ -0,0 +1,22 @@ | |
| 1 | ## Summary |
| 2 | |
| 3 | <!-- Briefly describe what this PR does and why. --> |
| 4 | |
| 5 | ## Type of Change |
| 6 | |
| 7 | - [ ] Bug fix (non-breaking change that fixes an issue) |
| 8 | - [ ] New feature (non-breaking change that adds functionality) |
| 9 | - [ ] Documentation update |
| 10 | - [ ] Refactor (no functional changes) |
| 11 | - [ ] Breaking change (fix or feature that would cause existing functionality to change) |
| 12 | |
| 13 | ## Test Plan |
| 14 | |
| 15 | <!-- Describe how you tested these changes. Include commands or scenarios. --> |
| 16 | |
| 17 | ## Checklist |
| 18 | |
| 19 | - [ ] Tests pass (`pytest tests/`) |
| 20 | - [ ] Lint is clean (`ruff check src/ tests/`) |
| 21 | - [ ] Documentation updated (if applicable) |
| 22 | - [ ] Commit messages follow project conventions |
+40
| --- a/.github/SECURITY.md | ||
| +++ b/.github/SECURITY.md | ||
| @@ -0,0 +1,40 @@ | ||
| 1 | +# Security Policy | |
| 2 | + | |
| 3 | +## Reporting a Vulnerability | |
| 4 | + | |
| 5 | +If you discover a security vulnerability in Hugoifier, please **do not open a public GitHub issue**. | |
| 6 | + | |
| 7 | +Instead, email: | |
| 8 | + | |
| 9 | +**[email protected]** | |
| 10 | + | |
| 11 | +Include: | |
| 12 | + | |
| 13 | +- A description of the vulnerability and its potential impact | |
| 14 | +- Steps to reproduce | |
| 15 | +- Any relevant logs or proof-of-concept code | |
| 16 | +- Your recommended fix, if you have one | |
| 17 | + | |
| 18 | +## What to Expect | |
| 19 | + | |
| 20 | +- **Acknowledgment** within 2 business days | |
| 21 | +- **Assessment** — we may follow up for additional details | |
| 22 | +- **Resolution** — critical issues targeted within 14 days | |
| 23 | +- **Credit** — with your permission, we'll credit you in the release notes | |
| 24 | + | |
| 25 | +## Supported Versions | |
| 26 | + | |
| 27 | +We provide security updates for the latest version only. | |
| 28 | + | |
| 29 | +| Version | Supported | | |
| 30 | +|---------|-----------| | |
| 31 | +| Latest | ✅ | | |
| 32 | +| Older | ❌ | | |
| 33 | + | |
| 34 | +## Scope | |
| 35 | + | |
| 36 | +This policy covers Hugoifier's first-party code. Vulnerabilities in third-party dependencies (`anthropic`, `openai`, `google-generativeai`, `pyyaml`) should be reported upstream, though we appreciate a heads-up so we can update our dependencies promptly. | |
| 37 | + | |
| 38 | +## Thank You | |
| 39 | + | |
| 40 | +We value responsible disclosure and appreciate the effort it takes. Thank you for helping keep Hugoifier safe. |
| --- a/.github/SECURITY.md | |
| +++ b/.github/SECURITY.md | |
| @@ -0,0 +1,40 @@ | |
| --- a/.github/SECURITY.md | |
| +++ b/.github/SECURITY.md | |
| @@ -0,0 +1,40 @@ | |
| 1 | # Security Policy |
| 2 | |
| 3 | ## Reporting a Vulnerability |
| 4 | |
| 5 | If you discover a security vulnerability in Hugoifier, please **do not open a public GitHub issue**. |
| 6 | |
| 7 | Instead, email: |
| 8 | |
| 9 | **[email protected]** |
| 10 | |
| 11 | Include: |
| 12 | |
| 13 | - A description of the vulnerability and its potential impact |
| 14 | - Steps to reproduce |
| 15 | - Any relevant logs or proof-of-concept code |
| 16 | - Your recommended fix, if you have one |
| 17 | |
| 18 | ## What to Expect |
| 19 | |
| 20 | - **Acknowledgment** within 2 business days |
| 21 | - **Assessment** — we may follow up for additional details |
| 22 | - **Resolution** — critical issues targeted within 14 days |
| 23 | - **Credit** — with your permission, we'll credit you in the release notes |
| 24 | |
| 25 | ## Supported Versions |
| 26 | |
| 27 | We provide security updates for the latest version only. |
| 28 | |
| 29 | | Version | Supported | |
| 30 | |---------|-----------| |
| 31 | | Latest | ✅ | |
| 32 | | Older | ❌ | |
| 33 | |
| 34 | ## Scope |
| 35 | |
| 36 | This policy covers Hugoifier's first-party code. Vulnerabilities in third-party dependencies (`anthropic`, `openai`, `google-generativeai`, `pyyaml`) should be reported upstream, though we appreciate a heads-up so we can update our dependencies promptly. |
| 37 | |
| 38 | ## Thank You |
| 39 | |
| 40 | We value responsible disclosure and appreciate the effort it takes. Thank you for helping keep Hugoifier safe. |
A
LICENSE
+21
| --- a/LICENSE | ||
| +++ b/LICENSE | ||
| @@ -0,0 +1,21 @@ | ||
| 1 | +MIT License | |
| 2 | + | |
| 3 | +Copyright (c) 2026 CONFLICT LLC. All rights reserved. | |
| 4 | + | |
| 5 | +Permission is hereby granted, free of charge, to any person obtaining a copy | |
| 6 | +of this software and associated documentation files (the "Software"), to deal | |
| 7 | +in the Software without restriction, including without limitation the rights | |
| 8 | +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| 9 | +copies of the Software, and to permit persons to whom the Software is | |
| 10 | +furnished to do so, subject to the following conditions: | |
| 11 | + | |
| 12 | +The above copyright notice and this permission notice shall be included in all | |
| 13 | +copies or substantial portions of the Software. | |
| 14 | + | |
| 15 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| 16 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| 17 | +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| 18 | +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| 19 | +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| 20 | +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
| 21 | +SOFTWARE. |
| --- a/LICENSE | |
| +++ b/LICENSE | |
| @@ -0,0 +1,21 @@ | |
| --- a/LICENSE | |
| +++ b/LICENSE | |
| @@ -0,0 +1,21 @@ | |
| 1 | MIT License |
| 2 | |
| 3 | Copyright (c) 2026 CONFLICT LLC. All rights reserved. |
| 4 | |
| 5 | Permission is hereby granted, free of charge, to any person obtaining a copy |
| 6 | of this software and associated documentation files (the "Software"), to deal |
| 7 | in the Software without restriction, including without limitation the rights |
| 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
| 9 | copies of the Software, and to permit persons to whom the Software is |
| 10 | furnished to do so, subject to the following conditions: |
| 11 | |
| 12 | The above copyright notice and this permission notice shall be included in all |
| 13 | copies or substantial portions of the Software. |
| 14 | |
| 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
| 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| 21 | SOFTWARE. |