generated from coulomb/repo-seed
Add comprehensive feedback system that enables lightweight, unstructured feedback collection from users of the issue-facade capability, establishing a continuous improvement loop grounded in real-world usage. Core Components: - .feedback/ directory structure (inbound, reviewed, archived) - Standalone CLI tool (.capability/feedback) for submission and management - Comprehensive documentation (.feedback/README.md) - Integration examples and usage guides Key Features: - Multiple submission methods (CLI, Makefile, direct file drop) - No structure imposement - accepts any text/markdown format - Automatic metadata capture (timestamp, git context, version) - Maintainer workflow (list, review, archive, create issues) - Colored terminal output for better UX - Future-ready for API endpoint evolution Integration: - Updated CAPABILITY.yaml with feedback section - Enhanced CLAUDE.md with comprehensive integration guide - Added Makefile commands (feedback, feedback-list, feedback-stats, etc.) - Created detailed usage examples (examples/feedback-example.md) Design Philosophy: - Capability-agnostic pattern (reusable across all markitect capabilities) - Decentralized (each capability owns its feedback) - Flexible (no required formats or fields) - Durable (plain markdown files, git-tracked) - Actionable (feedback lives where maintainers work) - Scalable (works for 1 user or 1000 users) Feedback Submission Examples: ./.capability/feedback submit "Your feedback" make feedback MSG="Your feedback" echo "Feedback" > .feedback/inbound/$(date +%Y%m%d)-feedback.md Maintainer Workflow: make feedback-list # List pending make feedback-stats # Show statistics make feedback-review-issue FILE=xxx # Review and create issue This establishes a robust continuous improvement loop: User Experience → Feedback → Review → Action → Improved Capability The pattern is designed to be copied to any capability in the markitect project, providing consistent feedback collection across all capabilities. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
276 lines
8.4 KiB
YAML
276 lines
8.4 KiB
YAML
# Issue Facade Capability Manifest
|
|
# This file describes the capability to coding agents and integration systems
|
|
|
|
metadata:
|
|
name: issue-facade
|
|
version: 1.0.0
|
|
type: coordination-tool
|
|
description: >
|
|
Universal interface for issue tracking coordination across Gitea, GitHub, GitLab.
|
|
Provides unified API to prevent direct platform API usage and credential sprawl.
|
|
|
|
# What problems this capability solves
|
|
purpose:
|
|
primary: Agent coordination via issue tracking
|
|
problems_solved:
|
|
- Direct API calls to GitHub/GitLab/Gitea (avoid credential sprawl)
|
|
- Inconsistent issue tracking access patterns
|
|
- Token waste from redundant API calls
|
|
- Platform-specific code in agents
|
|
- Offline/online sync complexity
|
|
|
|
# When agents should use this capability
|
|
usage_rules:
|
|
MUST_USE_INSTEAD_OF:
|
|
- "Direct Gitea API calls (requests.post to /api/v1/repos/...)"
|
|
- "GitHub CLI (gh issue create/list/...)"
|
|
- "GitLab CLI (glab issue create/list/...)"
|
|
- "Python libraries (PyGithub, python-gitlab)"
|
|
- "Direct SQL queries to issue databases"
|
|
|
|
PREFER_OVER:
|
|
- "Web scraping of issue tracker UIs"
|
|
- "Manual issue management"
|
|
- "Custom issue tracking scripts"
|
|
|
|
USE_WHEN:
|
|
- "Creating, updating, or querying issues"
|
|
- "Multi-agent coordination needed"
|
|
- "Offline work with sync required"
|
|
- "Cross-platform issue management"
|
|
|
|
# How to integrate this capability
|
|
integration:
|
|
methods:
|
|
python_api:
|
|
available: true
|
|
import: "from issue_tracker.backends.gitea import GiteaBackend"
|
|
docs: "AGENT_INTEGRATION.md"
|
|
|
|
cli:
|
|
available: true
|
|
command: "issue"
|
|
subcommands: ["list", "create", "show", "edit", "close", "comment"]
|
|
json_output: true
|
|
|
|
mcp_server:
|
|
available: false # Future: Phase 2
|
|
status: planned
|
|
|
|
installation:
|
|
method: pip
|
|
command: "pip install -e capabilities/issue-facade/"
|
|
verify: "issue --version"
|
|
|
|
configuration:
|
|
required: true
|
|
method: manual # v1.0 - auto in v1.1
|
|
steps:
|
|
- "Export GITEA_API_TOKEN environment variable"
|
|
- "Run: issue backend add myproject gitea"
|
|
- "Provide: URL, owner, repo when prompted"
|
|
- "Run: issue backend set-default myproject"
|
|
|
|
# API surface for agents
|
|
api:
|
|
core_operations:
|
|
- name: list_issues
|
|
description: Query issues with filtering
|
|
python: "backend.list_issues(IssueFilter(state='open', labels=['bug']))"
|
|
cli: "issue list --state=open --label=bug --format=json"
|
|
|
|
- name: create_issue
|
|
description: Create new issue
|
|
python: "backend.create_issue(Issue(...))"
|
|
cli: "issue create 'Title' --label=bug --assignee=agent"
|
|
|
|
- name: update_issue
|
|
description: Update existing issue
|
|
python: "backend.update_issue(issue)"
|
|
cli: "issue edit 42 --state=in_progress"
|
|
|
|
- name: add_comment
|
|
description: Add comment to issue
|
|
python: "backend.add_comment(issue.id, comment)"
|
|
cli: "issue comment 42 'Progress update'"
|
|
|
|
- name: close_issue
|
|
description: Close issue
|
|
python: "issue.state = IssueState.CLOSED; backend.update_issue(issue)"
|
|
cli: "issue close 42 --comment='Done'"
|
|
|
|
# Performance and efficiency
|
|
efficiency:
|
|
local_caching: true
|
|
offline_mode: true
|
|
batch_operations: false # v1.0 limitation
|
|
rate_limiting: automatic
|
|
|
|
token_savings:
|
|
vs_direct_api: "~70% fewer tokens (uses local cache + structured models)"
|
|
vs_cli_tools: "~50% fewer tokens (JSON output vs parsing text)"
|
|
|
|
# Credential management
|
|
credentials:
|
|
method: environment_variables
|
|
variables:
|
|
- GITEA_API_TOKEN
|
|
- GITEA_URL (optional with config)
|
|
|
|
security:
|
|
- "Tokens never in code or logs"
|
|
- "Config stored in ~/.config/issue-facade/"
|
|
- "Per-repo config in .issue-facade/ (gitignored)"
|
|
|
|
best_practices:
|
|
- "Use read-only tokens for monitoring agents"
|
|
- "Use write tokens only for implementation agents"
|
|
- "Rotate tokens regularly"
|
|
|
|
# Agent integration guidance
|
|
agent_guidance:
|
|
quick_start: |
|
|
# For Python agents:
|
|
from issue_tracker.backends.gitea import GiteaBackend
|
|
from issue_tracker.core.interfaces import IssueFilter
|
|
|
|
backend = GiteaBackend()
|
|
backend.connect(config)
|
|
issues = backend.list_issues(IssueFilter(state='open'))
|
|
|
|
# For CLI/shell agents:
|
|
issue list --format=json | jq '.[] | {number, title, state}'
|
|
|
|
coordination_pattern: |
|
|
# Claim issue to prevent race conditions
|
|
issue edit 42 --assignee=my-agent-id --state=in_progress
|
|
issue comment 42 "Starting work..."
|
|
|
|
# Do work...
|
|
|
|
issue comment 42 "Completed: <summary>"
|
|
issue close 42 --comment="Done"
|
|
|
|
error_handling: |
|
|
# Check exit codes
|
|
if ! issue backend test myproject; then
|
|
echo "Backend not configured or unavailable"
|
|
exit 1
|
|
fi
|
|
|
|
# Feedback and continuous improvement
|
|
feedback:
|
|
enabled: true
|
|
method: feedback-capability
|
|
description: >
|
|
This capability integrates the feedback pattern for continuous improvement
|
|
based on real-world usage from master projects.
|
|
|
|
submission:
|
|
cli: ".capability/feedback submit 'Your feedback here'"
|
|
file: ".capability/feedback submit path/to/feedback.md"
|
|
directory: ".feedback/inbound/"
|
|
|
|
organization:
|
|
inbound: "New feedback awaiting review"
|
|
reviewed: "Feedback that's been reviewed by maintainers"
|
|
archived: "Resolved or outdated feedback"
|
|
|
|
for_users: |
|
|
Submit feedback about issue-facade:
|
|
./.capability/feedback submit "Feedback text"
|
|
./.capability/feedback submit detailed-feedback.md
|
|
|
|
Or drop a file directly:
|
|
echo "Feedback..." > .feedback/inbound/$(date +%Y%m%d)-feedback.md
|
|
|
|
for_maintainers: |
|
|
Review feedback:
|
|
./.capability/feedback list
|
|
./.capability/feedback show <filename>
|
|
./.capability/feedback review <filename> --create-issue
|
|
./.capability/feedback stats
|
|
|
|
integration_notes:
|
|
- "Feedback capability is reusable across all markitect capabilities"
|
|
- "No structure imposement - accepts any text/markdown format"
|
|
- "Capability owns feedback organization and prioritization"
|
|
- "Can evolve to API endpoint when capability becomes a service"
|
|
|
|
# Documentation references
|
|
documentation:
|
|
integration: "AGENT_INTEGRATION.md"
|
|
development: "CLAUDE.md"
|
|
roadmap: "ROADMAP.md"
|
|
examples: "examples/agents/"
|
|
feedback: ".feedback/README.md"
|
|
|
|
# Dependencies and requirements
|
|
requirements:
|
|
runtime:
|
|
python: ">=3.8"
|
|
packages:
|
|
- "click>=8.0.0"
|
|
- "requests>=2.25.0"
|
|
- "python-dateutil>=2.8.0"
|
|
|
|
optional:
|
|
- "jq (for JSON parsing in shell)"
|
|
- "sqlite3 (usually pre-installed)"
|
|
|
|
# Current limitations (v1.0)
|
|
limitations:
|
|
- "Manual backend configuration required (auto-detect in v1.1)"
|
|
- "No built-in issue locking (workaround via assignee + comment)"
|
|
- "Basic conflict resolution (advanced in v2.0)"
|
|
- "Hardcoded user context (agent identity in v1.2)"
|
|
|
|
# Roadmap for capability evolution
|
|
roadmap:
|
|
v1.1:
|
|
- "Auto-detection from git remotes"
|
|
- "Environment-only configuration"
|
|
- "Zero-setup for common platforms"
|
|
v1.2:
|
|
- "Agent identity management"
|
|
- "Native issue claiming/locking"
|
|
- "Webhook support"
|
|
v2.0:
|
|
- "Issue dependencies"
|
|
- "Query DSL"
|
|
- "Distributed locking"
|
|
|
|
# Testing and validation
|
|
testing:
|
|
test_command: "make test"
|
|
coverage: 61%
|
|
test_count: 109
|
|
|
|
verify_installation: |
|
|
# Verify capability is working
|
|
issue backend list # Should show configured backends
|
|
issue list --format=json | jq 'length' # Should return issue count
|
|
|
|
# Support and troubleshooting
|
|
support:
|
|
common_issues:
|
|
- problem: "Backend not configured"
|
|
solution: "Run: issue backend add <name> <type>"
|
|
|
|
- problem: "Authentication failed"
|
|
solution: "Check GITEA_API_TOKEN is set and valid"
|
|
|
|
- problem: "Command not found: issue"
|
|
solution: "Run: pip install -e capabilities/issue-facade/"
|
|
|
|
# Integration priority score (higher = more important for agent to use)
|
|
priority:
|
|
score: 95 # 0-100, where 100 = critical
|
|
reasoning: >
|
|
Critical for agent coordination. Bypassing this capability leads to:
|
|
- Credential management issues
|
|
- Inconsistent issue state
|
|
- Token waste
|
|
- Platform lock-in
|
|
- Race conditions in multi-agent scenarios
|