# Github Portfolio

> Create or update GitHub portfolio documentation from repository analysis

- Skill: `reggiechan74/github-portfolio` (Agent Skill)
- Install (CLI): `npx skillmds@latest add reggiechan74/github-portfolio`
- Raw SKILL.md: https://api.skillmd.com/api/skills/reggiechan74/github-portfolio/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: reggiechan74 (https://skillmd.com/u/reggiechan74)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/reggiechan74/github-portfolio

---


## Configuration

Read `.jobops/config.json`. If missing, stop with:

> JOBOPS NOT CONFIGURED
> Run /jobops:setup to initialize your workspace.

Use `config.directories.<key>` for all file paths in this skill.
Use `config.preferences.cultural_profile` if this skill generates resume-style content.
Use `config.preferences.default_jurisdiction` if this skill has jurisdiction-sensitive logic (crisis/legal skills accept `--jurisdiction=<ISO-3166-2>` to override).

## Usage and Arguments

Creates or updates a GitHub portfolio document.

**Output file:** `{config.directories.career_analysis}/github_portfolio_{YYYYMMDD}.md` — a fresh timestamped snapshot is written on every run (create, add, or refresh).

**Usage forms:**
- `/github-portfolio <repository-url>` — create if no prior snapshot exists, otherwise add the repo to the latest snapshot.
- `/github-portfolio <repository-url> -create` — force a brand-new snapshot (first repository).
- `/github-portfolio <repository-url> -update` — add the repository to the latest existing snapshot.
- `/github-portfolio -update` — full portfolio refresh/reorganization of the latest snapshot (no URL needed).

**Arguments:**
- `$1`: Repository URL (required for adding repositories) OR the `-update` flag for refresh-only mode.
- `$2`: Mode flag (optional, defaults to auto-detect):
  - `-create`: Force create a new portfolio snapshot.
  - `-update`: Force update of the latest portfolio snapshot.

## Step 1: Parse Arguments and Determine Mode

**Repository URL**: $1
**Mode Flag**: ${2:-auto}

Checking arguments:
- If `$1` is `-update` and no `$2`: **Refresh Mode** (reorganize existing portfolio)
- If `$1` is a URL: **Repository Addition Mode** (create or update)
  - If portfolio exists: Update mode
  - If portfolio doesn't exist: Create mode
  - Mode can be forced with `$2` flag

---

## Step 2: Check Portfolio Existence

Checking whether a prior portfolio snapshot already exists in `{config.directories.career_analysis}/` (any file matching `github_portfolio_*.md`). When more than one exists, use the most recent by date suffix as the working snapshot for add/refresh operations.

**Result**: [Snapshot exists/does not exist]

---

## Step 3: Mode Selection

Based on arguments and portfolio existence:
- **Mode**: [CREATE NEW | ADD TO EXISTING | REFRESH EXISTING]

---

## Mode: CREATE NEW PORTFOLIO

**Purpose**: Create initial `github_portfolio_{YYYYMMDD}.md` snapshot with first repository.

**Repository URL Provided**: $1

### Step 3.1: Attempt to Access Repository

I'll try to access the repository directly to read its README and structure.

Attempting to fetch: $1

**Access Methods**:
1. Try WebFetch to read README.md from GitHub URL
2. If that fails (403, private repo, etc.), provide manual analysis script

### Step 3.2A: If Repository Accessible

[If WebFetch succeeds]:
- Read README.md content
- Parse repository name, description
- Attempt to infer technical details from README
- Ask user for additional details (commits, file counts, specific metrics)
- Proceed to create portfolio entry

### Step 3.2B: If Repository NOT Accessible (Most Likely)

[If WebFetch fails with 403/private/inaccessible]:

**The repository is not publicly accessible or I cannot reach it directly.**

No problem! Please run this analysis script in the repository's codespace/terminal and paste the complete results back to me:

```bash
#!/bin/bash
echo "=== REPOSITORY ANALYSIS FOR PORTFOLIO DOCUMENTATION ==="
echo ""
echo "## Basic Repository Information"
echo "Repository: $(basename $(git rev-parse --show-toplevel 2>/dev/null || pwd))"
echo "Current Branch: $(git branch --show-current 2>/dev/null || echo 'N/A')"
echo "Total Commits: $(git rev-list --count HEAD 2>/dev/null || echo 'N/A')"
echo "Last Commit: $(git log -1 --format='%h - %s (%ar)' 2>/dev/null || echo 'N/A')"
echo ""

echo "## File Structure"
echo "Total Files: $(find . -type f -not -path '*/\.*' | wc -l)"
echo ""
echo "Directory Tree (top 3 levels):"
tree -L 3 -I 'node_modules|.git|__pycache__|*.pyc' 2>/dev/null || find . -type d -not -path '*/\.*' -maxdepth 3 | sort
echo ""

echo "## README Content"
if [ -f README.md ]; then
    echo "--- START README.md ---"
    cat README.md
    echo "--- END README.md ---"
else
    echo "No README.md found"
fi
echo ""

echo "## Package/Dependency Information"
if [ -f package.json ]; then
    echo "--- package.json ---"
    cat package.json
fi
if [ -f requirements.txt ]; then
    echo "--- requirements.txt ---"
    cat requirements.txt
fi
if [ -f pyproject.toml ]; then
    echo "--- pyproject.toml ---"
    cat pyproject.toml
fi
echo ""

echo "## Code Statistics"
echo "Python files: $(find . -name '*.py' -not -path '*/\.*' | wc -l)"
echo "JavaScript files: $(find . -name '*.js' -not -path '*/\.*' | wc -l)"
echo "TypeScript files: $(find . -name '*.ts' -not -path '*/\.*' | wc -l)"
echo "Bash scripts: $(find . -name '*.sh' -not -path '*/\.*' | wc -l)"
echo "Markdown files: $(find . -name '*.md' -not -path '*/\.*' | wc -l)"
echo ""

echo "## Sample Code (largest Python/Bash/TypeScript files)"
for file in $(find . \( -name '*.py' -o -name '*.sh' -o -name '*.ts' \) | grep -v '.git' | grep -v 'node_modules' | head -5); do
    echo "--- $file ($(wc -l < "$file") lines) ---"
    head -50 "$file"
    echo ""
done

echo "## Git Activity"
echo "Commit History (last 10):"
git log --oneline -10 2>/dev/null || echo "Git history not available"
echo ""

echo "Recent Contributors:"
git shortlog -sn --no-merges | head -5 2>/dev/null || echo "N/A"
echo ""

echo "=== END ANALYSIS ==="
```

**Instructions**:
1. Open a terminal in the repository's codespace or local clone
2. Copy the entire script above
3. Paste it into the terminal and press Enter
4. Copy ALL the output (from "=== REPOSITORY ANALYSIS" to "=== END ANALYSIS ===")
5. Paste the complete output in your next message

Once you provide the analysis, I'll create your initial portfolio entry.

---

## Mode: ADD TO EXISTING PORTFOLIO

**Purpose**: Add new repository to the latest snapshot and write a new timestamped snapshot.

**Repository URL Provided**: $1

### Step 3.1: Read Latest Portfolio Snapshot

Read the most recent `{config.directories.career_analysis}/github_portfolio_*.md` file.

**Current Portfolio Status**:
- Total repositories: [count from file]
- Next repository number: [N+1]
- Portfolio version: [current version]
- Last updated: [date from file]

### Step 3.2: Attempt to Access Repository

Attempting to fetch: $1

**Access Methods**:
1. Try WebFetch to read README.md from GitHub URL
2. If that fails, provide manual analysis script

### Step 3.3A: If Repository Accessible

[If WebFetch succeeds]:
- Parse repository information
- Ask for additional metrics if needed
- Create comprehensive repository entry
- Update portfolio

### Step 3.3B: If Repository NOT Accessible

**The repository is not publicly accessible.**

Please run this analysis script in the repository's codespace and paste the results:

```bash
#!/bin/bash
echo "=== REPOSITORY ANALYSIS FOR PORTFOLIO DOCUMENTATION ==="
echo ""
echo "## Basic Repository Information"
echo "Repository: $(basename $(git rev-parse --show-toplevel 2>/dev/null || pwd))"
echo "Current Branch: $(git branch --show-current 2>/dev/null || echo 'N/A')"
echo "Total Commits: $(git rev-list --count HEAD 2>/dev/null || echo 'N/A')"
echo "Last Commit: $(git log -1 --format='%h - %s (%ar)' 2>/dev/null || echo 'N/A')"
echo ""

echo "## File Structure"
echo "Total Files: $(find . -type f -not -path '*/\.*' | wc -l)"
echo ""
echo "Directory Tree (top 3 levels):"
tree -L 3 -I 'node_modules|.git|__pycache__|*.pyc' 2>/dev/null || find . -type d -not -path '*/\.*' -maxdepth 3 | sort
echo ""

echo "## README Content"
if [ -f README.md ]; then
    echo "--- START README.md ---"
    cat README.md
    echo "--- END README.md ---"
else
    echo "No README.md found"
fi
echo ""

echo "## Package/Dependency Information"
if [ -f package.json ]; then
    echo "--- package.json ---"
    cat package.json
fi
if [ -f requirements.txt ]; then
    echo "--- requirements.txt ---"
    cat requirements.txt
fi
if [ -f pyproject.toml ]; then
    echo "--- pyproject.toml ---"
    cat pyproject.toml
fi
echo ""

echo "## Code Statistics"
echo "Python files: $(find . -name '*.py' -not -path '*/\.*' | wc -l)"
echo "JavaScript files: $(find . -name '*.js' -not -path '*/\.*' | wc -l)"
echo "TypeScript files: $(find . -name '*.ts' -not -path '*/\.*' | wc -l)"
echo "Bash scripts: $(find . -name '*.sh' -not -path '*/\.*' | wc -l)"
echo "Markdown files: $(find . -name '*.md' -not -path '*/\.*' | wc -l)"
echo ""

echo "## Sample Code (largest Python/Bash/TypeScript files)"
for file in $(find . \( -name '*.py' -o -name '*.sh' -o -name '*.ts' \) | grep -v '.git' | grep -v 'node_modules' | head -5); do
    echo "--- $file ($(wc -l < "$file") lines) ---"
    head -50 "$file"
    echo ""
done

echo "## Git Activity"
echo "Commit History (last 10):"
git log --oneline -10 2>/dev/null || echo "Git history not available"
echo ""

echo "Recent Contributors:"
git shortlog -sn --no-merges | head -5 2>/dev/null || echo "N/A"
echo ""

echo "=== END ANALYSIS ==="
```

**After receiving analysis**:
1. Parse repository analysis output
2. Create comprehensive repository entry following established format
3. Insert into Primary Repositories section (next available number)
4. Update capability matrices with new skills/technologies
5. Update conclusion to reference new repository count
6. Increment portfolio version number
7. Update "Last Updated" date

---

## Mode: REFRESH EXISTING PORTFOLIO

**Purpose**: Full portfolio reorganization and content refresh without adding new repositories.

**Triggered When**: User runs `/github-portfolio -update` with no URL

### Step 3.1: Read Latest Portfolio Snapshot

Read the most recent `{config.directories.career_analysis}/github_portfolio_*.md` file as the working snapshot.

**Current Portfolio Status**:
- Total repositories: [count]
- Portfolio version: [current version]
- Last updated: [date]

### Step 3.2: Comprehensive Review Tasks

1. **Repository Entries Consistency**:
   - Verify all entries follow current template format
   - Check for complete sections in each entry
   - Ensure consistent emoji usage and status indicators
   - Verify all repository links work

2. **Capability Matrices Accuracy**:
   - Review all 11 matrices for current proficiency levels
   - Add any new skills/technologies from recent work
   - Ensure honest positioning (AI-collaborative vs independent)
   - Check evidence references are current

3. **Positioning and Messaging**:
   - Refresh conclusion with current repository count
   - Update "What I Bring" / "What I Don't Claim" sections
   - Review application language examples for relevance
   - Ensure "AI-Collaborative Builder" philosophy is consistent

4. **Table of Contents**:
   - Verify all anchor links work correctly
   - Ensure all repositories are listed
   - Check capability matrix links
   - Confirm career positioning sections are linked

5. **Version and Date**:
   - Increment portfolio version (minor: X.Y+1)
   - Update lastUpdated to today's date in YAML frontmatter
   - Update "Last Updated" at bottom of document

6. **Quality Checks**:
   - Remove any outdated information
   - Fix broken internal references
   - Ensure development philosophy remains honest and accurate
   - Verify all repository counts match

### Step 3.3: Generate Update Summary

After refresh, provide summary of:
- Changes made
- New version number
- Items requiring user attention (if any)

---

## Repository Entry Template

When adding a new repository, use this comprehensive structure:

```markdown
### N. [repository-name](https://github.com/username/repo-name)
**Status**: Production (vX.Y.Z) | **License**: [License] | **Commits**: N

One-paragraph description highlighting core purpose and key technologies.

**Technical Architecture**:
- **Key Component 1**: Description with metrics
- **Key Component 2**: Description with metrics
- **Key Component 3**: Description with metrics
- **Key Component 4**: Description with metrics
- **Key Component 5**: Description with metrics

**Technical Sophistication**:
- **Scale Metric**: Total files, lines of code, complexity indicators
- **Advanced Pattern 1**: Specific implementation details
- **Advanced Pattern 2**: Specific implementation details
- **Advanced Pattern 3**: Specific implementation details
- **Advanced Pattern 4**: Specific implementation details

**Skills Demonstrated**:
- **Skill 1** (proficiency level: specific evidence)
- **Skill 2** (proficiency level: specific evidence)
- **Skill 3** (proficiency level: specific evidence)
- **Skill 4** (proficiency level: specific evidence)
- **Skill 5** (proficiency level: specific evidence)
- **Skill 6** (proficiency level: specific evidence)

**Business Impact**:
- Quantified improvement 1
- Quantified improvement 2
- Quantified improvement 3
- Use case or application context

**Development Approach**:
How this was built, key learning journey, relationship to other repositories, development philosophy demonstrated.

**Domain Specialization** (if applicable):
Specific industry domain, technical specialty, or problem space this addresses.

**Key Innovation**:
**Bold Innovation Name**: One-paragraph description of the unique approach, pattern, or solution this repository demonstrates. What makes this different or notable.

**[Optional] Component Breakdown**:
- **Category 1**: List of components/features
- **Category 2**: List of components/features
```

---

## Capability Matrices to Maintain

When updating portfolio, ensure these capability matrices remain comprehensive and accurate:

1. **Core Programming & Software Engineering** (7 capabilities)
2. **Data Science & Machine Learning** (5 capabilities)
3. **Financial Domain & Real Estate** (4 capabilities)
4. **AI Collaboration & Modern Development** (6 capabilities)
5. **AI Agent Systems & Orchestration** (6 capabilities)
6. **API & Data Integration** (5 capabilities)
7. **Bash Scripting & System Automation** (6 capabilities)
8. **Research Automation & Knowledge Management** (7 capabilities)
9. **Performance Engineering & Optimization** (5 capabilities)
10. **Workflow Automation & Process Design** (6 capabilities)
11. **Strategic & Analytical Capabilities** (5 capabilities)

**Matrix Format**:
```markdown
| Capability | Proficiency | Evidence | Development Method |
|---|---|---|---|
| **Capability Name** | Proficiency description | Specific evidence from repositories | How acquired/developed |
```

---

## Development Philosophy Principles

**Always maintain these core positioning principles**:

1. **Radical Honesty**: "Zero software engineering experience, ALL built through Claude Code collaboration"
2. **AI-Collaborative Builder**: Domain expert who learned to leverage AI as development partner
3. **What I Bring**: Domain expertise, architectural thinking, AI collaboration skills, proof of capability
4. **What I Don't Claim**: Traditional SWE credentials, ability to code independently, ML engineering qualification
5. **Value Proposition**: Living case study of domain expert to AI builder transformation

---

## Output Requirements

**File Location**: `{config.directories.career_analysis}/github_portfolio_{YYYYMMDD}.md` (new timestamped snapshot per run)

**YAML Front Matter**:
```yaml
---
title: GitHub Repositories & Derived Technical Capabilities
person: Reggie Chan
lastUpdated: YYYY-MM-DD (today's date)
category: Technology Portfolio
keywords: AI-assisted-development, Python, machine-learning, financial-systems, Claude-Code
shareable: true
profileType: technical-portfolio
---
```

**Version Tracking**:
- Update `lastUpdated` field to today's date
- Increment `Portfolio Version` at end of document (format: X.Y)
  - Major version (X): Adding new repository or major restructuring
  - Minor version (Y): Content updates, refinements, corrections

**Quality Checks**:
- [ ] All repository entries follow consistent format
- [ ] Table of Contents links work correctly
- [ ] Capability matrices are complete and accurate
- [ ] Conclusion reflects current repository count
- [ ] Application language examples are current
- [ ] Repository Links section is complete
- [ ] Version and date are updated

---

Let me proceed with the selected mode.

