gitpadi 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Netwalls
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.
package/README.md ADDED
@@ -0,0 +1,266 @@
1
+ <p align="center">
2
+ <h1 align="center">🤖 GitPadi</h1>
3
+ <p align="center"><strong>Your AI-powered GitHub management agent.</strong></p>
4
+ <p align="center">
5
+ Auto-score contributors, review PRs, manage issues & repos — from your terminal or as a GitHub Action.
6
+ </p>
7
+ <p align="center">
8
+ <a href="#-use-the-cli">CLI</a> •
9
+ <a href="#-use-as-github-action">GitHub Action</a> •
10
+ <a href="#-scoring-algorithm">Scoring Algorithm</a>
11
+ </p>
12
+ </p>
13
+
14
+ ---
15
+
16
+ ## ⚡ Two Ways to Use GitPadi
17
+
18
+ | Method | Best For | Setup |
19
+ |--------|----------|-------|
20
+ | **CLI** (`npx gitpadi`) | Hands-on management from your terminal | One command |
21
+ | **GitHub Action** | Automated scoring & reviews on every event | Copy one workflow file |
22
+
23
+ ---
24
+
25
+ ## 🖥️ Use the CLI
26
+
27
+ **No installation needed.** Run directly with `npx`:
28
+
29
+ ```bash
30
+ export GITHUB_TOKEN=ghp_your_token
31
+ export GITHUB_OWNER=your-org
32
+ export GITHUB_REPO=your-repo
33
+
34
+ npx gitpadi
35
+ ```
36
+
37
+ That launches the **interactive terminal**:
38
+
39
+ ```
40
+ ┌─────────────────────────────────────┐
41
+ │ 🤖 GitPadi v2.0 │
42
+ │ Your GitHub Management Companion │
43
+ └─────────────────────────────────────┘
44
+
45
+ ? What would you like to do?
46
+ 📋 Manage Issues
47
+ 🔀 Manage Pull Requests
48
+ 📦 Manage Repositories
49
+ 🏆 Score Contributors
50
+ 🚀 Create Release
51
+ ⚙️ Switch Repo
52
+ 👋 Exit
53
+ ```
54
+
55
+ Or use **direct commands**:
56
+
57
+ ```bash
58
+ npx gitpadi issues list
59
+ npx gitpadi prs merge 5 --method squash
60
+ npx gitpadi contributors score octocat
61
+ npx gitpadi repo create my-app --org MyOrg
62
+ ```
63
+
64
+ ### All CLI Commands
65
+
66
+ <details>
67
+ <summary><b>📋 Issues</b></summary>
68
+
69
+ ```bash
70
+ npx gitpadi issues list # List open issues
71
+ npx gitpadi issues create -t "Bug fix" -l bug # Create issue
72
+ npx gitpadi issues bulk -f issues.json # Bulk create from JSON
73
+ npx gitpadi issues close 42 # Close issue
74
+ npx gitpadi issues reopen 42 # Reopen issue
75
+ npx gitpadi issues delete 42 # Close & lock
76
+ npx gitpadi issues assign 42 alice bob # Assign users
77
+ npx gitpadi issues assign-best 42 # 🏆 Auto-assign top scorer
78
+ npx gitpadi issues search "login bug" # Search issues
79
+ npx gitpadi issues label 42 bug priority-high # Add labels
80
+ ```
81
+ </details>
82
+
83
+ <details>
84
+ <summary><b>🔀 Pull Requests</b></summary>
85
+
86
+ ```bash
87
+ npx gitpadi prs list # List open PRs
88
+ npx gitpadi prs merge 5 --method squash # Merge PR (squash/merge/rebase)
89
+ npx gitpadi prs close 5 # Close PR
90
+ npx gitpadi prs review 5 # Auto-review (size, tests, security)
91
+ npx gitpadi prs approve 5 # Approve PR
92
+ npx gitpadi prs diff 5 # Show changed files
93
+ ```
94
+ </details>
95
+
96
+ <details>
97
+ <summary><b>📦 Repositories</b></summary>
98
+
99
+ ```bash
100
+ npx gitpadi repo list --org MyOrg # List repos
101
+ npx gitpadi repo create my-app --org MyOrg # Create repo
102
+ npx gitpadi repo delete my-app --org MyOrg # Delete repo
103
+ npx gitpadi repo clone my-app # Clone repo
104
+ npx gitpadi repo info my-app # Show repo details
105
+ npx gitpadi repo topics my-app rust blockchain # Set topics
106
+ ```
107
+ </details>
108
+
109
+ <details>
110
+ <summary><b>🏆 Contributors</b></summary>
111
+
112
+ ```bash
113
+ npx gitpadi contributors score octocat # Score a user (0-100)
114
+ npx gitpadi contributors rank 42 # Rank all applicants for issue #42
115
+ npx gitpadi contributors list # List repo contributors
116
+ ```
117
+ </details>
118
+
119
+ <details>
120
+ <summary><b>🚀 Releases</b></summary>
121
+
122
+ ```bash
123
+ npx gitpadi release create v1.0.0 # Create release (auto-notes)
124
+ npx gitpadi release create v1.0.0 --draft # Create as draft
125
+ npx gitpadi release list # List releases
126
+ ```
127
+ </details>
128
+
129
+ ### Or install globally:
130
+
131
+ ```bash
132
+ npm install -g gitpadi
133
+ gitpadi issues list
134
+ ```
135
+
136
+ ---
137
+
138
+ ## 🔧 Use as GitHub Action
139
+
140
+ Just add a workflow file — no setup, no tokens to manage.
141
+
142
+ ### 🏆 Auto-Score Contributors
143
+
144
+ ```yaml
145
+ # .github/workflows/applicant-scorer.yml
146
+ name: Score Applicants
147
+ on:
148
+ issue_comment:
149
+ types: [created]
150
+ permissions:
151
+ contents: read
152
+ issues: write
153
+ pull-requests: read
154
+ jobs:
155
+ score:
156
+ if: "!github.event.issue.pull_request"
157
+ runs-on: ubuntu-latest
158
+ steps:
159
+ - uses: actions/checkout@v4
160
+ - uses: Netwalls/contributor-agent@v2
161
+ with:
162
+ action: score-applicant
163
+ notify-user: 'your-username' # ← you get @mentioned
164
+ ```
165
+
166
+ ### 🔍 Auto-Review PRs
167
+
168
+ ```yaml
169
+ # .github/workflows/pr-review.yml
170
+ name: PR Review
171
+ on:
172
+ pull_request:
173
+ types: [opened, synchronize, reopened]
174
+ permissions:
175
+ contents: read
176
+ pull-requests: write
177
+ jobs:
178
+ review:
179
+ runs-on: ubuntu-latest
180
+ steps:
181
+ - uses: actions/checkout@v4
182
+ - uses: Netwalls/contributor-agent@v2
183
+ with:
184
+ action: review-pr
185
+ ```
186
+
187
+ ### 📋 Bulk Create Issues
188
+
189
+ ```yaml
190
+ # .github/workflows/create-issues.yml
191
+ name: Create Issues
192
+ on:
193
+ workflow_dispatch:
194
+ inputs:
195
+ issues-file:
196
+ description: 'Path to issues JSON'
197
+ default: 'issues.json'
198
+ dry-run:
199
+ description: 'Preview only'
200
+ default: 'true'
201
+ permissions:
202
+ issues: write
203
+ jobs:
204
+ create:
205
+ runs-on: ubuntu-latest
206
+ steps:
207
+ - uses: actions/checkout@v4
208
+ - uses: Netwalls/contributor-agent@v2
209
+ with:
210
+ action: create-issues
211
+ issues-file: ${{ github.event.inputs.issues-file }}
212
+ dry-run: ${{ github.event.inputs.dry-run }}
213
+ ```
214
+
215
+ ---
216
+
217
+ ## 🏆 Scoring Algorithm
218
+
219
+ GitPadi scores contributors on **6 dimensions** (100 points total):
220
+
221
+ | Category | Max | What It Measures |
222
+ |----------|-----|-----------------|
223
+ | 🔧 **Repo Experience** | **30** | Merged PRs, open PRs, issues in YOUR specific repo |
224
+ | 🏛️ Account Maturity | 15 | Account age |
225
+ | 🌐 GitHub Presence | 15 | Public repos, followers, profile README |
226
+ | ⚡ Activity Level | 15 | Recent public GitHub activity |
227
+ | 📝 Application Quality | 15 | Comment depth — mentions approach, experience, timeline |
228
+ | 💻 Language Relevance | 10 | User's languages match issue label languages |
229
+
230
+ ### Tiers
231
+
232
+ | Tier | Score | Recommendation |
233
+ |------|-------|---------------|
234
+ | 🏆 **S** | 75+ | Strong — assign immediately |
235
+ | 🟢 **A** | 55-74 | Good — assign with confidence |
236
+ | 🟡 **B** | 40-54 | Decent — review profile first |
237
+ | 🟠 **C** | 25-39 | Below average — wait for better |
238
+ | 🔴 **D** | 0-24 | Low — manual review needed |
239
+
240
+ ### Detected Application Phrases
241
+
242
+ > *"I'd like to work on this"* · *"Can I take this?"* · *"Assign me"* · *"I'm interested"* · *"I want to contribute"* · *"Let me handle this"* · *"Picking this up"* · *"Claiming this"*
243
+
244
+ ---
245
+
246
+ ## ⚙️ Configuration
247
+
248
+ ### Environment Variables
249
+
250
+ | Variable | Required | Description |
251
+ |----------|----------|-------------|
252
+ | `GITHUB_TOKEN` | ✅ | GitHub PAT with `repo` scope |
253
+ | `GITHUB_OWNER` | For CLI | Org or username |
254
+ | `GITHUB_REPO` | For CLI | Repository name |
255
+
256
+ ### CLI Flags
257
+
258
+ ```bash
259
+ npx gitpadi --owner MyOrg --repo my-project --token ghp_xxx issues list
260
+ ```
261
+
262
+ ---
263
+
264
+ ## 📄 License
265
+
266
+ MIT — Built by [Netwalls](https://github.com/Netwalls)
package/action.yml ADDED
@@ -0,0 +1,92 @@
1
+ name: 'Contributor Agent'
2
+ description: 'GitHub Action that auto-creates issues from a data file, reviews PRs, and scores applicants with a ranking algorithm'
3
+ author: 'Netwalls'
4
+ branding:
5
+ icon: 'users'
6
+ color: 'purple'
7
+
8
+ inputs:
9
+ action:
10
+ description: 'Which action to run: create-issues, review-pr, or score-applicant'
11
+ required: true
12
+ github-token:
13
+ description: 'GitHub token with repo/issues permissions'
14
+ required: true
15
+ default: ${{ github.token }}
16
+ notify-user:
17
+ description: 'GitHub username to @mention on applicant reviews'
18
+ required: false
19
+ default: ''
20
+ issues-file:
21
+ description: 'Path to JSON file containing issues to create (for create-issues action)'
22
+ required: false
23
+ default: ''
24
+ dry-run:
25
+ description: 'Preview without creating (for create-issues action)'
26
+ required: false
27
+ default: 'false'
28
+ start:
29
+ description: 'Start index for issue creation range'
30
+ required: false
31
+ default: '1'
32
+ end:
33
+ description: 'End index for issue creation range'
34
+ required: false
35
+ default: '999'
36
+
37
+ runs:
38
+ using: 'composite'
39
+ steps:
40
+ - name: Setup Node.js
41
+ uses: actions/setup-node@v4
42
+ with:
43
+ node-version: '20'
44
+
45
+ - name: Install dependencies
46
+ shell: bash
47
+ run: |
48
+ cd ${{ github.action_path }}
49
+ npm ci --production 2>/dev/null || npm install --production
50
+
51
+ - name: Run agent
52
+ shell: bash
53
+ env:
54
+ GITHUB_TOKEN: ${{ inputs.github-token }}
55
+ GITHUB_OWNER: ${{ github.repository_owner }}
56
+ GITHUB_REPO: ${{ github.event.repository.name }}
57
+ INPUT_ACTION: ${{ inputs.action }}
58
+ NOTIFY_USER: ${{ inputs.notify-user }}
59
+ ISSUES_FILE: ${{ inputs.issues-file }}
60
+ DRY_RUN: ${{ inputs.dry-run }}
61
+ ISSUE_START: ${{ inputs.start }}
62
+ ISSUE_END: ${{ inputs.end }}
63
+ PR_NUMBER: ${{ github.event.pull_request.number }}
64
+ ISSUE_NUMBER: ${{ github.event.issue.number }}
65
+ COMMENT_ID: ${{ github.event.comment.id }}
66
+ run: |
67
+ cd ${{ github.action_path }}
68
+
69
+ case "$INPUT_ACTION" in
70
+ create-issues)
71
+ ARGS=""
72
+ if [ "$DRY_RUN" = "true" ]; then ARGS="$ARGS --dry-run"; fi
73
+ if [ "$ISSUE_START" != "1" ] || [ "$ISSUE_END" != "999" ]; then
74
+ ARGS="$ARGS --start $ISSUE_START --end $ISSUE_END"
75
+ fi
76
+ if [ -n "$ISSUES_FILE" ]; then
77
+ ARGS="$ARGS --file $ISSUES_FILE"
78
+ fi
79
+ npx tsx src/create-issues.ts $ARGS
80
+ ;;
81
+ review-pr)
82
+ npx tsx src/pr-review.ts
83
+ ;;
84
+ score-applicant)
85
+ npx tsx src/applicant-scorer.ts
86
+ ;;
87
+ *)
88
+ echo "❌ Unknown action: $INPUT_ACTION"
89
+ echo " Valid actions: create-issues, review-pr, score-applicant"
90
+ exit 1
91
+ ;;
92
+ esac
@@ -0,0 +1,30 @@
1
+ # Auto-score contributors who apply for issues
2
+ name: Applicant Scorer
3
+
4
+ on:
5
+ issue_comment:
6
+ types: [created]
7
+
8
+ permissions:
9
+ contents: read
10
+ issues: write
11
+ pull-requests: read
12
+
13
+ jobs:
14
+ score:
15
+ # Only run on issue comments (not PR), skip bot comments
16
+ if: >
17
+ !github.event.issue.pull_request &&
18
+ github.event.comment.user.login != 'github-actions[bot]'
19
+ runs-on: ubuntu-latest
20
+ name: 🤖 Score Applicant
21
+
22
+ steps:
23
+ - uses: actions/checkout@v4
24
+
25
+ - name: Score Applicant
26
+ uses: Netwalls/contributor-agent@v1
27
+ with:
28
+ action: score-applicant
29
+ github-token: ${{ secrets.GITHUB_TOKEN }}
30
+ notify-user: 'your-github-username' # change this!
@@ -0,0 +1,42 @@
1
+ # Batch create GitHub issues from a JSON file
2
+ name: Create Issues
3
+
4
+ on:
5
+ workflow_dispatch:
6
+ inputs:
7
+ issues-file:
8
+ description: 'Path to your issues JSON file'
9
+ required: true
10
+ default: 'issues.json'
11
+ dry-run:
12
+ description: 'Preview without creating (true/false)'
13
+ required: false
14
+ default: 'true'
15
+ start:
16
+ description: 'Start issue number'
17
+ required: false
18
+ default: '1'
19
+ end:
20
+ description: 'End issue number'
21
+ required: false
22
+ default: '999'
23
+
24
+ permissions:
25
+ issues: write
26
+
27
+ jobs:
28
+ create-issues:
29
+ runs-on: ubuntu-latest
30
+ name: 📋 Create Issues
31
+ steps:
32
+ - uses: actions/checkout@v4
33
+
34
+ - name: Create Issues
35
+ uses: Netwalls/contributor-agent@v1
36
+ with:
37
+ action: create-issues
38
+ github-token: ${{ secrets.GITHUB_TOKEN }}
39
+ issues-file: ${{ github.event.inputs.issues-file }}
40
+ dry-run: ${{ github.event.inputs.dry-run }}
41
+ start: ${{ github.event.inputs.start }}
42
+ end: ${{ github.event.inputs.end }}
@@ -0,0 +1,48 @@
1
+ {
2
+ "labels": {
3
+ "bug": "d73a49",
4
+ "feature": "0e8a16",
5
+ "enhancement": "a2eeef",
6
+ "documentation": "0075ca",
7
+ "good first issue": "7057ff",
8
+ "help wanted": "008672",
9
+ "priority-high": "e36209",
10
+ "priority-medium": "fbca04"
11
+ },
12
+ "milestones": {
13
+ "v1.0 - MVP": "Minimum viable product release",
14
+ "v2.0 - Growth": "Feature expansion and scaling"
15
+ },
16
+ "issues": [
17
+ {
18
+ "number": 1,
19
+ "title": "[Feature] Add user authentication",
20
+ "body": "## Description\nImplement user authentication with OAuth2.\n\n## Acceptance Criteria\n- [ ] Users can sign in with GitHub\n- [ ] JWT tokens are issued on login\n- [ ] Protected routes require valid tokens",
21
+ "labels": [
22
+ "feature",
23
+ "priority-high"
24
+ ],
25
+ "milestone": "v1.0 - MVP"
26
+ },
27
+ {
28
+ "number": 2,
29
+ "title": "[Bug] Fix login redirect loop",
30
+ "body": "## Description\nUsers are stuck in a redirect loop when attempting to log in.\n\n## Steps to Reproduce\n1. Go to /login\n2. Click 'Sign In'\n3. Page keeps refreshing\n\n## Expected Behavior\nUser should be redirected to dashboard after login.",
31
+ "labels": [
32
+ "bug",
33
+ "priority-high"
34
+ ],
35
+ "milestone": "v1.0 - MVP"
36
+ },
37
+ {
38
+ "number": 3,
39
+ "title": "[Docs] Write API documentation",
40
+ "body": "## Description\nCreate comprehensive API docs using OpenAPI/Swagger.\n\n## Acceptance Criteria\n- [ ] All endpoints documented\n- [ ] Request/response examples included\n- [ ] Authentication requirements noted",
41
+ "labels": [
42
+ "documentation",
43
+ "good first issue"
44
+ ],
45
+ "milestone": "v1.0 - MVP"
46
+ }
47
+ ]
48
+ }
@@ -0,0 +1,23 @@
1
+ # Auto-review every Pull Request
2
+ name: PR Review
3
+
4
+ on:
5
+ pull_request:
6
+ types: [opened, synchronize, reopened, edited]
7
+
8
+ permissions:
9
+ contents: read
10
+ pull-requests: write
11
+
12
+ jobs:
13
+ review:
14
+ runs-on: ubuntu-latest
15
+ name: 🤖 Review PR
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Review PR
20
+ uses: Netwalls/contributor-agent@v1
21
+ with:
22
+ action: review-pr
23
+ github-token: ${{ secrets.GITHUB_TOKEN }}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "gitpadi",
3
+ "version": "2.0.0",
4
+ "description": "🤖 GitPadi — Your AI-powered GitHub management CLI. Create repos, manage issues & PRs, score contributors, and automate everything.",
5
+ "type": "module",
6
+ "bin": {
7
+ "gitpadi": "./src/cli.ts"
8
+ },
9
+ "files": [
10
+ "src/",
11
+ "action.yml",
12
+ "examples/",
13
+ "README.md",
14
+ "LICENSE"
15
+ ],
16
+ "scripts": {
17
+ "start": "tsx src/cli.ts",
18
+ "dev": "tsx watch src/cli.ts",
19
+ "create-issues": "tsx src/create-issues.ts",
20
+ "review-pr": "tsx src/pr-review.ts",
21
+ "score-applicant": "tsx src/applicant-scorer.ts"
22
+ },
23
+ "keywords": [
24
+ "github",
25
+ "cli",
26
+ "github-action",
27
+ "issue-management",
28
+ "pr-review",
29
+ "contributor-scoring",
30
+ "automation",
31
+ "gitpadi"
32
+ ],
33
+ "author": "Netwalls",
34
+ "license": "MIT",
35
+ "dependencies": {
36
+ "@octokit/rest": "^21.1.1",
37
+ "boxen": "^8.0.1",
38
+ "chalk": "^5.4.1",
39
+ "cli-table3": "^0.6.5",
40
+ "commander": "^13.1.0",
41
+ "figlet": "^1.10.0",
42
+ "gradient-string": "^3.0.0",
43
+ "inquirer": "^12.4.2",
44
+ "nanospinner": "^1.2.2",
45
+ "ora": "^8.2.0",
46
+ "tsx": "^4.19.2"
47
+ },
48
+ "devDependencies": {
49
+ "@types/node": "^22.10.5",
50
+ "typescript": "^5.9.3"
51
+ }
52
+ }