Skip to content

Commit 01e3aa7

Browse files
chore: production repo setup — templates, security, contributing, automated changelog
Added: - CONTRIBUTING.md — dev setup, commit conventions, code style - SECURITY.md — vulnerability reporting, attack surface documentation - .github/ISSUE_TEMPLATE/bug_report.yml — structured bug reports - .github/ISSUE_TEMPLATE/feature_request.yml — structured feature requests - .github/PULL_REQUEST_TEMPLATE.md — PR checklist - .github/FUNDING.yml — GitHub Sponsors - .github/release-drafter.yml — auto-generates release notes from PR labels - .github/workflows/release-drafter.yml — runs on push to main and PR events Changed: - Cargo.toml — added keywords, categories, homepage, readme, rust-version - .gitignore — organized by section, added .claude/ exclusion
1 parent 8f82efd commit 01e3aa7

10 files changed

Lines changed: 269 additions & 5 deletions

File tree

.github/FUNDING.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
github: [Agent-Field]
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: Bug Report
2+
description: Something isn't working as expected
3+
labels: ["bug"]
4+
body:
5+
- type: textarea
6+
id: description
7+
attributes:
8+
label: What happened?
9+
description: Clear description of the bug.
10+
validations:
11+
required: true
12+
- type: textarea
13+
id: reproduce
14+
attributes:
15+
label: Steps to reproduce
16+
description: Minimal commands to reproduce the issue.
17+
placeholder: |
18+
plandb init "test"
19+
plandb add "Task A" --as a
20+
plandb add "Task B" --dep t-a
21+
# expected: ...
22+
# actual: ...
23+
validations:
24+
required: true
25+
- type: input
26+
id: version
27+
attributes:
28+
label: PlanDB version
29+
description: Output of `plandb --version`
30+
validations:
31+
required: true
32+
- type: dropdown
33+
id: interface
34+
attributes:
35+
label: Interface
36+
options:
37+
- CLI
38+
- MCP
39+
- HTTP
40+
validations:
41+
required: true
42+
- type: input
43+
id: os
44+
attributes:
45+
label: OS
46+
placeholder: macOS 15.2 / Ubuntu 24.04 / Windows 11
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Feature Request
2+
description: Suggest a new capability
3+
labels: ["enhancement"]
4+
body:
5+
- type: textarea
6+
id: problem
7+
attributes:
8+
label: What problem does this solve?
9+
description: Describe the use case. What are you trying to do that PlanDB doesn't support?
10+
validations:
11+
required: true
12+
- type: textarea
13+
id: solution
14+
attributes:
15+
label: Proposed solution
16+
description: How should this work? Include example commands if possible.
17+
placeholder: |
18+
plandb <new-command> --flag value
19+
# expected behavior: ...
20+
- type: dropdown
21+
id: interface
22+
attributes:
23+
label: Which interface?
24+
options:
25+
- CLI
26+
- MCP
27+
- HTTP
28+
- All

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
## Summary
2+
3+
<!-- What does this PR do? 1-3 bullet points. -->
4+
5+
## Test plan
6+
7+
- [ ] `cargo test` passes
8+
- [ ] `bash tests/functional_test.sh` passes
9+
- [ ] Tested manually with `plandb` CLI
10+
11+
<!-- For new features: -->
12+
<!-- - [ ] Added to CHANGELOG.md -->
13+
<!-- - [ ] Prompts updated (CLI, MCP, HTTP) if user-facing -->

.github/release-drafter.yml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name-template: 'PlanDB v$RESOLVED_VERSION'
2+
tag-template: 'v$RESOLVED_VERSION'
3+
template: |
4+
## What's Changed
5+
6+
$CHANGES
7+
8+
**Full Changelog**: https://github.com/Agent-Field/plandb/compare/$PREVIOUS_TAG...v$RESOLVED_VERSION
9+
categories:
10+
- title: New Features
11+
labels:
12+
- feat
13+
- enhancement
14+
- title: Bug Fixes
15+
labels:
16+
- bug
17+
- fix
18+
- title: Improvements
19+
labels:
20+
- refactor
21+
- perf
22+
- title: Documentation
23+
labels:
24+
- docs
25+
- documentation
26+
- title: CI/CD
27+
labels:
28+
- ci
29+
- chore
30+
version-resolver:
31+
major:
32+
labels:
33+
- breaking
34+
minor:
35+
labels:
36+
- feat
37+
- enhancement
38+
patch:
39+
labels:
40+
- bug
41+
- fix
42+
- refactor
43+
- docs
44+
default: patch
45+
autolabeler:
46+
- label: feat
47+
title:
48+
- '/^feat/i'
49+
- label: fix
50+
title:
51+
- '/^fix/i'
52+
- label: docs
53+
title:
54+
- '/^docs/i'
55+
- label: refactor
56+
title:
57+
- '/^refactor/i'
58+
- label: ci
59+
title:
60+
- '/^ci/i'
61+
- '/^chore/i'
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: Release Drafter
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request_target:
7+
types: [opened, reopened, synchronize]
8+
9+
permissions:
10+
contents: read
11+
pull-requests: write
12+
13+
jobs:
14+
update-release-draft:
15+
runs-on: ubuntu-latest
16+
steps:
17+
- uses: release-drafter/release-drafter@v6
18+
with:
19+
config-name: release-drafter.yml
20+
env:
21+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
/target/
2+
**/target/
3+
4+
# SQLite databases (local state)
25
*.db
36
*.db-wal
47
*.db-shm
8+
9+
# OS
510
.DS_Store
6-
experiments/*/plandb.db
7-
experiments/*/.venv/
8-
experiments/*/__pycache__/
11+
12+
# Python
913
**/__pycache__/
1014
*.pyc
11-
docs/plans/
15+
experiments/*/.venv/
16+
17+
# Local / editor
18+
.claude/
1219
.worktrees/
13-
**/target/
20+
docs/plans/

CONTRIBUTING.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Contributing to PlanDB
2+
3+
Thanks for your interest in contributing. Here's how to get started.
4+
5+
## Development Setup
6+
7+
```bash
8+
git clone https://github.com/Agent-Field/plandb.git
9+
cd plandb
10+
cargo build
11+
cargo test
12+
bash tests/functional_test.sh
13+
```
14+
15+
Requires Rust 1.75+. No other dependencies — SQLite is bundled.
16+
17+
## Making Changes
18+
19+
1. Fork the repo and create a branch from `main`
20+
2. Make your changes
21+
3. Run `cargo test` and `bash tests/functional_test.sh`
22+
4. Open a PR against `main`
23+
24+
CI must pass before merge. Branch protection requires the `test` status check.
25+
26+
## Commit Messages
27+
28+
Follow [Conventional Commits](https://www.conventionalcommits.org/):
29+
30+
```
31+
feat: add new command
32+
fix: handle edge case in batch import
33+
refactor: simplify context store lookup
34+
docs: update README
35+
ci: add clippy check
36+
test: add functional test for hooks
37+
```
38+
39+
## What to Work On
40+
41+
- Issues labeled `good first issue` are a great starting point
42+
- Check the [CHANGELOG](CHANGELOG.md) for context on recent changes
43+
- Run `plandb --help` to understand the full command surface
44+
45+
## Code Style
46+
47+
- `cargo fmt` for formatting
48+
- `cargo clippy` for lints
49+
- Keep functions under 50 lines where possible
50+
- Prefer explicit error handling over `.unwrap()`
51+
52+
## License
53+
54+
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.

Cargo.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,14 @@
22
name = "plandb"
33
version = "0.1.0"
44
edition = "2021"
5+
rust-version = "1.75"
56
description = "The issue tracker your AI agents are missing"
67
license = "Apache-2.0"
78
repository = "https://github.com/Agent-Field/plandb"
9+
homepage = "https://agentfield.ai"
10+
readme = "README.md"
11+
keywords = ["ai-agents", "task-graph", "orchestration", "mcp", "planning"]
12+
categories = ["command-line-utilities", "database"]
813

914
[dependencies]
1015
# CLI

SECURITY.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Security Policy
2+
3+
## Reporting a Vulnerability
4+
5+
If you discover a security vulnerability in PlanDB, please report it responsibly.
6+
7+
**Email:** security@agentfield.ai
8+
9+
Please include:
10+
- Description of the vulnerability
11+
- Steps to reproduce
12+
- Impact assessment
13+
14+
We will acknowledge reports within 48 hours and aim to release a fix within 7 days for critical issues.
15+
16+
## Scope
17+
18+
PlanDB runs as a local binary with a SQLite database. The primary attack surfaces are:
19+
20+
- **HTTP server mode** (`plandb serve`) — exposed network endpoints
21+
- **MCP server mode** (`plandb mcp`) — tool call handling
22+
- **Shell hooks** (`--pre-hook`, `--post-hook`) — arbitrary command execution by design
23+
- **YAML import** (`plandb import`) — deserialization of untrusted input
24+
- **Template URLs** — fetching and parsing remote YAML files
25+
26+
## Supported Versions
27+
28+
Only the latest release receives security updates.

0 commit comments

Comments
 (0)