Version standardization: - Move version to main README.md title: "Claude Code Marketplace - v2.2.0" - Remove version from plugins/projman/README.md title - Remove version from plugins/projman/CONFIGURATION.md title - Remove version from plugin listings in README.md - Remove "Key Features (v2.2.0)" -> "Key Features" - Remove Version section from plugins/projman/README.md - Remove version references from CLAUDE.md structure comments Added versioning rule to CLAUDE.md: - Version displayed ONLY in main README.md title - Do NOT add versions to plugin docs or config guides - Version history maintained in CHANGELOG.md only Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
10 KiB
Configuration Guide - Projman Plugin
Complete setup and configuration instructions for the Projman project management plugin.
Overview
The Projman plugin uses a hybrid configuration approach:
- System-level: Credentials for Gitea (stored once per machine)
- Project-level: Repository path (stored per project)
This design allows:
- Single token per service (update once, use everywhere)
- Easy multi-project setup (just add
.envper project) - Security (tokens never committed to git)
- Project isolation (each project has its own scope)
Prerequisites
Before configuring the plugin, ensure you have:
-
Python 3.10+ installed
python3 --version # Should be 3.10.0 or higher -
Git repository initialized
git status # Should show initialized repository -
Gitea access with an account and permissions to:
- Create issues
- Manage labels
- Read organization information
- Access repository wiki
-
Claude Code installed and working
Step 1: Install MCP Server
The plugin bundles the Gitea MCP server at mcp-servers/gitea/:
# Navigate to MCP server directory (inside plugin)
cd plugins/projman/mcp-servers/gitea
# Create virtual environment
python3 -m venv .venv
# Activate virtual environment
source .venv/bin/activate # Linux/Mac
# or
.venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
# Verify installation
python -c "from mcp_server import server; print('Gitea MCP Server installed successfully')"
# Deactivate when done
deactivate
Step 2: Generate Gitea API Token
- Log into Gitea: https://gitea.example.com
- Navigate to: User Icon (top right) → Settings
- Click Applications tab
- Scroll to Manage Access Tokens
- Click Generate New Token
- Configure token:
- Token Name:
claude-code-projman - Permissions:
repo(all sub-permissions) - Repository accessread:org- Read organization information and labelsread:user- Read user informationwrite:repo- Wiki access
- Token Name:
- Click Generate Token
- IMPORTANT: Copy token immediately (shown only once!)
- Save token securely - you'll need it in Step 3
Token Permissions Explained:
repo- Create, read, update issues, labels, and wikiread:org- Access organization-level labelsread:user- Associate issues with user accountwrite:repo- Create wiki pages for lessons learned
Step 3: System-Level Configuration
Create system-wide configuration file in ~/.config/claude/:
3.1 Create Configuration Directory
mkdir -p ~/.config/claude
3.2 Configure Gitea
cat > ~/.config/claude/gitea.env << 'EOF'
# Gitea API Configuration
GITEA_URL=https://gitea.example.com
GITEA_TOKEN=your_gitea_token_here
GITEA_ORG=your_organization
EOF
# Secure the file (owner read/write only)
chmod 600 ~/.config/claude/gitea.env
Replace placeholders:
your_gitea_token_herewith the token from Step 2your_organizationwith your Gitea organization name
Configuration Variables:
GITEA_URL- Gitea base URL (without/api/v1)GITEA_TOKEN- Personal access token from Step 2GITEA_ORG- Organization name (e.g.,bandit)
3.3 Verify System Configuration
# Check file exists and has correct permissions
ls -la ~/.config/claude/gitea.env
# Should show:
# -rw------- gitea.env
Security Note: File should have 600 permissions (owner read/write only) to protect API tokens.
Step 4: Project-Level Configuration
For each project where you'll use Projman, create a .env file:
4.1 Create Project .env File
# In your project root directory
cat > .env << 'EOF'
# Gitea Repository Configuration
GITEA_REPO=your-repo-name
EOF
Example for MyProject:
cat > .env << 'EOF'
GITEA_REPO=my-project
EOF
4.2 Verify Project Configuration
# Check .env exists
ls -la .env
# Check .env content
cat .env
Note: The .env file may already be in your .gitignore. If your project uses .env for other purposes, the Gitea configuration will merge with existing variables.
Step 5: Configuration Verification
Test that everything is configured correctly:
5.1 Test Gitea Connection
# Test with curl
curl -H "Authorization: token YOUR_GITEA_TOKEN" \
https://gitea.example.com/api/v1/user
# Should return your user information in JSON format
5.2 Test Wiki Access
# Test wiki API
curl -H "Authorization: token YOUR_GITEA_TOKEN" \
https://gitea.example.com/api/v1/repos/YOUR_ORG/YOUR_REPO/wiki/pages
# Should return list of wiki pages (or empty array)
5.3 Test MCP Server Loading
# Navigate to plugin directory
cd plugins/projman
# Verify .mcp.json exists
cat .mcp.json
# Test loading (Claude Code will attempt to start MCP servers)
claude --debug
Step 6: Initialize Plugin
6.1 Run Initial Setup
/initial-setup
This will:
- Validate Gitea MCP server connection
- Test credential configuration
- Sync label taxonomy
- Verify required directory structure
6.2 Sync Label Taxonomy
/labels-sync
This will:
- Fetch all labels from Gitea (organization + repository)
- Update
skills/label-taxonomy/labels-reference.md - Enable intelligent label suggestions
6.3 Verify Commands Available
# List available commands
/sprint-plan
/sprint-start
/sprint-status
/sprint-close
/labels-sync
/initial-setup
Configuration Files Reference
System-Level Files
~/.config/claude/gitea.env:
GITEA_URL=https://gitea.example.com
GITEA_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxxx
GITEA_ORG=your_organization
Project-Level Files
.env (in project root):
GITEA_REPO=your-repo-name
Plugin Configuration
projman/.mcp.json:
{
"mcpServers": {
"gitea": {
"command": "${CLAUDE_PLUGIN_ROOT}/mcp-servers/gitea/.venv/bin/python",
"args": ["-m", "mcp_server.server"],
"cwd": "${CLAUDE_PLUGIN_ROOT}/mcp-servers/gitea",
"env": {
"PYTHONPATH": "${CLAUDE_PLUGIN_ROOT}/mcp-servers/gitea"
}
}
}
}
Multi-Project Setup
To use Projman with multiple projects:
- System config: Set up once (already done in Step 3)
- Project config: Create
.envin each project root:
Project 1: Main App
# ~/projects/my-app/.env
GITEA_REPO=my-app
Project 2: App Site
# ~/projects/my-app-site/.env
GITEA_REPO=my-app-site
Project 3: Company Site
# ~/projects/company-site/.env
GITEA_REPO=company-site
Each project operates independently with its own issues and lessons learned (stored in each repository's wiki).
Troubleshooting
Cannot find configuration files
Problem: MCP server reports "Configuration not found"
Solution:
# Check system config exists
ls -la ~/.config/claude/gitea.env
# If missing, recreate from Step 3
Authentication failed
Problem: "401 Unauthorized" or "Invalid token"
Solution:
# Test Gitea token
curl -H "Authorization: token YOUR_TOKEN" \
https://gitea.example.com/api/v1/user
# If fails, regenerate token (Step 2)
MCP server not starting
Problem: "Failed to start MCP server"
Solution:
# Check Python virtual environment exists
ls plugins/projman/mcp-servers/gitea/.venv
# If missing, reinstall (Step 1)
# Check dependencies installed
cd plugins/projman/mcp-servers/gitea
source .venv/bin/activate
python -c "import requests; import mcp"
# If import fails, reinstall requirements
pip install -r requirements.txt
Wrong repository
Problem: Issues created in wrong repo
Solution:
# Check project .env configuration
cat .env
# Verify GITEA_REPO matches Gitea repository name exactly
# Update if incorrect
Permissions errors
Problem: "Permission denied" when creating issues or wiki pages
Solution:
- Verify token has
repo,read:org, andwrite:repopermissions (Step 2) - Regenerate token with correct permissions if needed
Repository not in organization
Problem: "Repository must belong to configured organization"
Solution:
- Verify
GITEA_ORGin system config matches the organization owning the repository - Verify
GITEA_REPObelongs to that organization - Fork the repository to your organization if needed
Security Best Practices
-
Never commit tokens
- Keep credentials in
~/.config/claude/only - Never hardcode tokens in code
- Use system-level config for credentials
- Keep credentials in
-
Secure configuration files
- Set
600permissions on~/.config/claude/*.env - Store in user home directory only
- Don't share token files
- Set
-
Rotate tokens periodically
- Regenerate tokens every 6-12 months
- Immediately revoke if compromised
- Use separate tokens for dev/prod if needed
-
Minimum permissions
- Only grant required permissions
- Gitea:
repo,read:org,read:user,write:repo
-
Monitor usage
- Review Gitea access logs periodically
- Watch for unexpected API usage
Next Steps
After configuration is complete:
- Run
/initial-setupto verify everything works - Run
/labels-syncto fetch label taxonomy - Try
/sprint-planto start your first sprint - Read README.md for usage guide
Support
Configuration Issues:
- Check README.md troubleshooting section
- Contact repository maintainer for support
Questions:
- Read command documentation:
commands/*.md - Check agent descriptions in
agents/
Configuration Status Checklist:
- Python 3.10+ installed
- Gitea MCP server installed (in
mcp-servers/gitea/) - Gitea API token generated with correct permissions
- System config created (
~/.config/claude/gitea.env) - Project config created (
.env) - Gitea connection tested
- Wiki access tested
/initial-setupcompleted successfully/labels-synccompleted successfully- Commands verified available
Once all items are checked, you're ready to use Projman!