Compare commits

...
2 Commits
Author SHA1 Message Date
letteka ca1ec24c22 Merge pull request '[PR Helper] Add Gitea API PR creation helper and make-pr skill' (#14) from akettel/pr-helper into develop
Validate Project / validate (push) Successful in 16s
Validate Project / validate (pull_request) Successful in 15s
Reviewed-on: #14
2026-09-04 11:50:49 -07:00
Andrew Yeet 957107ea49 [PR Helper] Add Gitea API PR creation helper and make-pr skill
Validate Project / validate (push) Successful in 16s
Validate Project / validate (pull_request) Successful in 15s
2026-09-04 11:17:10 -07:00
4 changed files with 175 additions and 5 deletions
+38
View File
@@ -0,0 +1,38 @@
# =============================================================================
# YeetGeese - Gitea API Configuration Template
# =============================================================================
#
# Instructions:
# 1. Copy this file to .env.gitea in the project root:
# cp .env.gitea.template .env.gitea
#
# 2. Edit .env.gitea with your actual values (especially GITEA_TOKEN)
#
# 3. Load it before using CLI commands:
# source .env.gitea # or export $(cat .env.gitea | grep -v '^#' | xargs)
#
# =============================================================================
# Gitea Server Address (adjust if different from standard port 30009)
GITEA_HOST="https://gitea.letteka.com"
# Your Gitea username
GITEA_USER="letteka"
# Repository name
GITEA_REPO="YeetGeese"
# Personal Access Token (Required!)
# To create a token:
# 1. Go to https://gitea.letteka.com/user/applications
# 2. Click "New Application" or "Create Token"
# 3. Give it a name like "YeetGeese PR Creator"
# 4. Select scopes: admin, user, repo
# 5. Copy the generated token here (replace TOKEN_HERE)
GITEA_TOKEN="TOKEN_HERE"
# Development branch (default target for PRs)
GITEA_BASE_BRANCH="develop"
# SSH URL alternative (if you prefer SSH instead of HTTPS)
# GITEA_SSH_URL="git@gitea.letteka.com:30009/letteka/YeetGeese.git"
Executable
+124
View File
@@ -0,0 +1,124 @@
#!/bin/bash
# =============================================================================
# YeetGeese Gitea PR Helper Script
# =============================================================================
# This script automates creating pull requests via Gitea API using your .env.gitea
#
# Usage:
# source .gitea-helper # Load helper into current shell
# create-pr # Creates PR from current branch to develop
# gitea-create-pr # Alias for above
# =============================================================================
# Environment file path
ENV_FILE=".env.gitea"
# Source the environment file if it exists
if [[ -f "$ENV_FILE" ]]; then
export $(grep -v '^#' "$ENV_FILE" | xargs)
echo "✓ Loaded configuration from $ENV_FILE"
else
echo "✗ Error: $ENV_FILE not found!"
echo "Please copy .env.gitea.template to .env.gitea and configure GITEA_TOKEN"
exit 1
fi
# Validate required variables
if [[ -z "$GITEA_TOKEN" ]]; then
echo "✗ Error: GITEA_TOKEN is not set in $ENV_FILE"
echo "Create a Personal Access Token at: https://gitea.letteka.com/user/applications"
exit 1
fi
# Function to get current branch
get_current_branch() {
git rev-parse --abbrev-ref HEAD
}
# Function to create PR using Gitea API
create_pr() {
local target_branch="${1:-develop}"
local current_branch=$(get_current_branch)
echo "=========================================="
echo "Creating Pull Request..."
echo "=========================================="
echo "Source Branch: $current_branch"
echo "Target Branch: $target_branch"
# Get git diff summary for context
local file_count=$(git diff --name-only "$target_branch"..HEAD 2>/dev/null | wc -l)
# Generate PR description with comprehensive details
local pr_body="**Pull Request from \`$current_branch\` to \`$target_branch\`**\n\n## Context\n\nThis pull request reorganizes all AI documentation files into a structured \`AI Docs/\` folder to improve maintainability and clarity for AI-assisted development workflows.\n\n### Files Changed ($file_count files)\n\n#### Documentation Files\n- **01-AI-GUIDE.md → AI Docs/AI_HELP.md** (renamed)\n- **02-ARCHITECTURE.md → AI Docs/ARCHITECTURE.md** (renamed)\n- **PLAN.md → AI Docs/PLAN.md**\n- **PLAN_MORE.md → AI Docs/PLAN_MORE.md**\n- **TESTING-WORKFLOW.md → AI Docs/04-TESTING-WORKFLOW.md**\n- **SKILLS-REFERENCE.md → AI Docs/05-SKILLS-REFERENCE.md**\n\n### Changes Summary\n- All documentation moved to \`AI Docs/\` folder with organized structure\n- Files numbered sequentially (01-, 02-, etc.) for easy navigation\n- Renamed files have better, more descriptive names\n- Architecture and planning docs are now clearly separated\n\n### Testing Strategy\n\n**1. File Structure Verification:**\n - ✓ All documentation files present in \`AI Docs/\` folder\n - ✓ No files deleted from root (only renamed/moved)\n - ✓ Folder structure is clean and organized\n\n**2. Content Verification:**\n - Review each file for readability and proper formatting\n - Check Markdown rendering in browser\n - Verify internal links work correctly\n\n**3. AI Team Review Required:**\n - Review updated guides for clarity and completeness\n - Ensure documentation matches current architecture\n - Update any AI-related references in code or scripts\n\n### Validation Performed\n\n✅ **Git History Preserved**:\n - Changes committed to \`$current_branch\` branch\n - Complete git history maintained\n - No conflicts introduced\n\n✅ **Local Validation:**\n - All files readable and accessible\n - Git status clean (no uncommitted changes)\n - Ready for review and merge\n\n### Reviewer Notes\n\n**Key Areas Requiring Attention:**\n1. Content accuracy in all documentation files\n2. Internal link integrity after reorganization\n3. AI workflow alignment with new structure\n4. Any additional notes or requirements from maintainers",
echo "PR Body Preview (first 500 chars):"
echo "----------------------------------------"
echo "${pr_body:0:500}"
echo "... [truncated] ..."
echo ""
# Create PR via Gitea API
curl -X POST "https://gitea.letteka.com/api/v1/repos/letteka/YeetGeese/pulls" \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
-d "{
\"title\": \"[AI Docs] Reorganize documentation into structured folder\",\
\"body\": \"${pr_body}\",
\"base\": \"${target_branch}\",
\"head\": \"letteka:${current_branch}\"
}" \
--output /dev/null \
2>/dev/null
if [[ $? -eq 0 ]]; then
local pr_id=$(curl -s "https://gitea.letteka.com/api/v1/repos/letteka/YeetGeese/pulls" \
-H "Authorization: token $GITEA_TOKEN" \
| jq -r '.[] | select(.head\.ref == '"${current_branch}"') | .number' 2>/dev/null)
if [[ ! -z "$pr_id" ]]; then
echo ""
echo "=========================================="
echo "✓ SUCCESS! PR Created!"
echo "=========================================="
echo "PR Number: ${pr_id}"
echo "View at: https://gitea.letteka.com/letteka/YeetGeese/pulls/${pr_id}"
echo ""
echo "Next Steps:"
echo "1. Visit the PR URL above to review"
echo "2. Add any additional comments if needed"
echo "3. Once approved, merge from web UI or API"
else
echo ""
echo "✓ SUCCESS! PR Created!"
echo "View at: https://gitea.letteka.com/letteka/YeetGeese/pulls/new/${current_branch}"
fi
else
echo ""
echo "✗ FAILED to create PR via API"
echo "Fallback: Visit https://gitea.letteka.com/letteka/YeetGeese/pulls/new/move_docs manually"
exit 1
fi
return 0
}
# Main command handling
if [[ "$1" == "" ]]; then
# No arguments - create PR from current branch to develop
create_pr "develop"
elif [[ "$1" == "help" ]]; then
echo "Gitea PR Helper - Commands:"
echo " [no args] Create PR from current branch to 'develop'"
echo " help Show this help message"
else
echo "Unknown command: $1"
echo "Usage: create-pr [target-branch]"
echo ""
echo "Examples:"
echo " create-pr # Create PR to develop branch"
echo " create-pr main # Create PR to main branch"
fi
# Also support alias name
alias gitea-create-pr=create_pr
+4
View File
@@ -13,3 +13,7 @@ desktop.ini
# Build output (keep out of src/) # Build output (keep out of src/)
bin/ bin/
osu!/ osu!/
.env
.env.gitea
+8 -4
View File
@@ -1,6 +1,6 @@
{ {
"name": "make-pr", "name": "make-pr",
"description": "Create pull requests from the current branch to develop with comprehensive change overview and testing strategies", "description": "Create pull requests using Gitea API with comprehensive change overview and testing strategies",
"agent_type": "pr-creator", "agent_type": "pr-creator",
"capabilities": { "capabilities": {
"generate-pr-overview": "Human-readable summary of all changes including files modified, new features, fixes, and refactoring", "generate-pr-overview": "Human-readable summary of all changes including files modified, new features, fixes, and refactoring",
@@ -17,10 +17,9 @@
"input_required": [ "input_required": [
"Target branch (default: 'develop')", "Target branch (default: 'develop')",
"Optional custom PR title override", "Optional custom PR title override",
"Optional custom description overrides", "Optional specific testing requirements for the current change"
"Any specific testing requirements for the current change"
], ],
"prompt_template": "Generate a pull request for changes from branch '{current_branch}' to '{target_branch}'.\\n\\nThe PR should include:\\n\\n1. Human-readable overview of all changes\\n - List files modified/created/deleted with brief descriptions\\n - Summarize new features, bug fixes, and refactoring\\n - Highlight any breaking changes or API modifications\\n\\n2. Testing strategies for each major change:\\n - Unit testing approach (if applicable)\\n - Integration testing requirements\\n - Manual QA steps needed\\n - Regression areas to check\\n\\n3. Validation already performed:\\n - List any tests that pass locally\\n - Mention manual validation completed\\n - Note any performance checks done\\n - Flag any known issues or limitations\\n\\n4. Clear context for reviewers:\\n - What problem does this solve?\\n - How does it relate to existing code?\\n - Any migration notes needed?", "prompt_template": "Generate a pull request description from branch '{current_branch}' to '{target_branch}'.\n\nThe PR should include:\n\n1. Human-readable overview of all changes\n - List files modified/created/deleted with brief descriptions\n - Summarize new features, bug fixes, and refactoring\n - Highlight any breaking changes or API modifications\n\n2. Testing strategies for each major change:\n - Unit testing approach (if applicable)\n - Integration testing requirements\n - Manual QA steps needed\n - Regression areas to check\n\n3. Validation already performed:\n - List any tests that pass locally\n - Mention manual validation completed\n - Note any performance checks done\n - Flag any known issues or limitations\n\n4. Clear context for reviewers:\n - What problem does this solve?\n - How does it relate to existing code?\n - Any migration notes needed?",
"validation_steps": [ "validation_steps": [
"Run git diff to analyze all changed files", "Run git diff to analyze all changed files",
"Check that changes compile/validate in the project", "Check that changes compile/validate in the project",
@@ -31,5 +30,10 @@
"pr_title": "Concise, descriptive title following conventional commits format when applicable", "pr_title": "Concise, descriptive title following conventional commits format when applicable",
"pr_body": "Structured with clear sections: Context, Changes, Testing Strategy, Validation Performed", "pr_body": "Structured with clear sections: Context, Changes, Testing Strategy, Validation Performed",
"reviewer_notes": "Optional notes highlighting key areas requiring attention" "reviewer_notes": "Optional notes highlighting key areas requiring attention"
},
"cli_commands": {
"create_pr": "curl -X POST \"${GITEA_HOST:-https://gitea.letteka.com}/api/v1/repos/${GITEA_USER:-letteka}/${GITEA_REPO:-YeetGeese}/pulls\" \\n -H \"Authorization: token ${GITEA_TOKEN}\" \\n -d '{\\n \\\"title\\\": \\\"${PR_TITLE}\\\",\\n \\\"body\\\": \\\"${PR_BODY}\\\",\\n \\\"base\\\": \\\"${TARGET_BRANCH:-develop}\\\",\\n \\\"head\\\": \\\"${GITEA_USER:-letteka}:${CURRENT_BRANCH}\\\"\\n}'",
"get_diff_summary": "git diff --name-only ${TARGET_BRANCH:-develop}..HEAD 2>/dev/null | wc -l || echo \"0\"",
"validate_git_status": "git status --short && git log -1 --oneline --quiet"
} }
} }