template-upstream

IMPORTANT: This skill must be run in the template repo context, not in a downstream project. Propose changes from the current project back to the upstream python-project-template repository by generating a structured proposal file in proposals/. Use when a pattern, rule, hook, skill, or config in this project is good enough to share with the template. Triggers on: "템플릿에 반영", "upstream 제안", "template에 올리고 싶어", "이 패턴 템플릿에 추가", "proposal 만들어줘".

13 stars

Best use case

template-upstream is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

IMPORTANT: This skill must be run in the template repo context, not in a downstream project. Propose changes from the current project back to the upstream python-project-template repository by generating a structured proposal file in proposals/. Use when a pattern, rule, hook, skill, or config in this project is good enough to share with the template. Triggers on: "템플릿에 반영", "upstream 제안", "template에 올리고 싶어", "이 패턴 템플릿에 추가", "proposal 만들어줘".

Teams using template-upstream should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/template-upstream/SKILL.md --create-dirs "https://raw.githubusercontent.com/tae0y/python-project-template/main/.claude/skills.nouse/template-upstream/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/template-upstream/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How template-upstream Compares

Feature / Agenttemplate-upstreamStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

IMPORTANT: This skill must be run in the template repo context, not in a downstream project. Propose changes from the current project back to the upstream python-project-template repository by generating a structured proposal file in proposals/. Use when a pattern, rule, hook, skill, or config in this project is good enough to share with the template. Triggers on: "템플릿에 반영", "upstream 제안", "template에 올리고 싶어", "이 패턴 템플릿에 추가", "proposal 만들어줘".

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# template-upstream

> **Context:** Run this skill from the **template repo** (`python-project-template`), not from a downstream project. Proposals are template-level artifacts — one shared `proposals/` directory for all projects, not one per downstream project.

Direction: Project → Template. Generate a structured proposal file in `proposals/` so that good patterns discovered in this project can be reviewed for inclusion in the upstream template.

## Proposal File Convention

Path: `proposals/draft/YYYYMMDD/proposal-<slug>.md`

- `draft/`: all new proposals start here
- `YYYYMMDD`: today's date
- `slug`: kebab-case summary of the change (e.g., `add-ruff-hook`, `update-commit-convention`)

Example: `proposals/draft/20260222/proposal-add-ruff-hook.md`

## Proposal File Format

```markdown
# Proposal: <title>

**Date:** YYYY-MM-DD
**Source project:** <project name from git remote origin or directory name>
**Category:** <rule | hook | skill | config | command | other>
**Status:** draft

## Summary

One paragraph: what is being proposed and why it is useful.

## Motivation

What problem this pattern solved in the source project.
Why it belongs in the template.

### Evidence from localdocs

Cite specific artifacts that demonstrate the pattern has real-world value.
At least one citation required; proposal without evidence is weak.

| Artifact | Location | What it shows |
|----------|----------|---------------|
| learn file | `localdocs/learn.<topic>.md` | Problem encountered, pattern adopted |
| ADR | `localdocs/adr/adr-NNN-<slug>.md` | Architectural decision it supports |
| worklog entry | `localdocs/worklog.done.md` | Task where the pattern made a difference |

If no localdocs evidence exists, state: "No localdocs evidence — pattern is theoretical."
The reviewer (template-proposal-review) will weight this accordingly.

## Proposed Change

### Target path(s) in template

List of file paths to add or modify (relative to template repo root).

### Content

\`\`\`
Full file content or unified diff
\`\`\`

## Caveats

Any considerations when applying. Write "None." if not applicable.

## Review checklist

- [ ] No conflict with existing template files
- [ ] All project-specific values removed (paths, domains, secrets)
- [ ] Downstream sync test needed after applying via template-downstream
- [ ] localdocs evidence cited (or absence explicitly noted)
```

## Steps

### 1. Clarify scope and load localdocs context

If the user has not specified what to propose, ask:

```
What would you like to propose to the template?
Please provide a file path or describe the pattern.
```

Before reading the source file, read the project's `localdocs/` to surface evidence:

```bash
# Glob for all localdocs artifacts
localdocs/worklog.done.md
localdocs/learn.*.md
localdocs/adr/*.md
```

Scan these files for mentions of the proposed pattern, file name, or related concepts.
The goal is to find real-world evidence that the pattern was applied and produced value —
mirroring how the `.claude/` review team (review-20260222.md) validated patterns
by cross-referencing learn files, ADRs, and worklog entries before recommending promotion.

If `localdocs/` does not exist or is empty, note that no evidence is available.

### 2. Read source file and security review

Read the target file. Before including any content in the proposal, remove or replace the following:

| Check | Example | Replace with |
|-------|---------|--------------|
| API keys / tokens | `sk-...`, `ghp_...` | `<YOUR_API_KEY>` |
| DDNS / real domains | `myhouse.duckdns.org` | `example.com` |
| Internal IP addresses | `192.168.1.10` | `<HOST_IP>` |
| Inlined `.env` values | `password=secret123` | `<YOUR_PASSWORD>` |
| Absolute paths (home dir) | `/Users/john/projects/` | `<PROJECT_ROOT>/` |

After removal, verify the content would be safe to paste into a public GitHub issue.

### 3. Resolve template root and create date directory

Resolve `TEMPLATE_ROOT` using the same priority order as `template-downstream`:

1. **User-provided path** — ask the user: "Do you have a local clone of the template repo? If yes, provide the path." If provided and `<path>/.claude/` exists, use its parent as `TEMPLATE_ROOT`.
2. **Clone** — otherwise:

```bash
TMPDIR=$(mktemp -d)
git clone --depth 1 https://github.com/tae0y/python-project-template.git "$TMPDIR/template"
TEMPLATE_ROOT="$TMPDIR/template"
```

Then create the proposals directory:

```bash
mkdir -p "$TEMPLATE_ROOT/proposals/draft/YYYYMMDD"
```

Skip if already exists.

### 4. Write proposal file

Create `$TEMPLATE_ROOT/proposals/draft/YYYYMMDD/proposal-<slug>.md` using the format above.

- Replace all project-specific values with `<your-value>` placeholders
- Infer `Category` from file location: `.claude/rules/` → rule, `.claude/hooks/` → hook, `.claude/skills/` → skill, etc.

### 5. Report

```
Created: <TEMPLATE_ROOT>/proposals/draft/20260222/proposal-<slug>.md

Review and apply via the template-proposal-review skill.
```

Related Skills

template-proposal-review

13
from tae0y/python-project-template

Review proposal files in localdocs/localdocs/proposals/ and decide whether to apply them to the upstream python-project-template repository. Use when evaluating proposals generated by template-upstream, deciding which ones to accept or reject, and applying accepted ones to the template repo. Triggers on: "proposal 검토", "제안 검토", "template에 반영할지", "proposals 리뷰", "upstream 반영 결정".

template-downstream

13
from tae0y/python-project-template

Update .claude/, .mcp.json, and .pre-commit-config.yaml from the upstream python-project-template repository into the current project. Only files that exist upstream are updated — project-only files are never deleted. Use when pulling latest tooling, rules, hooks, or skills from the canonical template into this project. Triggers on: "템플릿 최신화", "template sync", "upstream 반영", "template 업데이트".

template-broadcast

13
from tae0y/python-project-template

Apply template-downstream to all registered downstream projects in bulk, one project at a time. Use when you want to push the latest .claude/, .mcp.json, or .pre-commit-config.yaml to every project at once. Triggers on: "일괄 배포", "전체 프로젝트에 내려보내기", "모든 프로젝트 업데이트", "broadcast template", "bulk sync".

worklog

13
from tae0y/python-project-template

Update worklog files by moving tasks between todo/doing/done states. Use when recording task progress, starting new work, or marking tasks complete. Requires explicit arguments: worklog [done|doing|todo] [description].

tdd

13
from tae0y/python-project-template

Test-Driven Development workflow. Use for ALL code changes - features, bug fixes, refactoring. TDD is non-negotiable.

sparks-create

13
from tae0y/python-project-template

Apply the 13 thinking tools from "Sparks of Genius" (생각의 탄생) to reframe any problem through creative, cross-disciplinary lenses. Use when conventional analysis falls short, when you need a fresh creative angle, or when the problem spans multiple domains.

skill-creator

13
from tae0y/python-project-template

Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.

rethink-unblock

13
from tae0y/python-project-template

Break out of a stuck approach by reframing a technical problem through structured thinking frameworks. Use when blocked, going in circles, or when a fresh perspective is needed on architecture, design, or debugging.

refactoring

13
from tae0y/python-project-template

Refactoring assessment and patterns. Use after tests pass (GREEN phase) to assess improvement opportunities.

python-mcp-expert

13
from tae0y/python-project-template

Expert assistant for developing Model Context Protocol (MCP) servers in Python. Use when creating, debugging, or optimizing MCP servers with FastMCP, tools, resources, and prompts.

python-conventions

13
from tae0y/python-project-template

Python coding conventions and guidelines including PEP 8, type hints, docstrings, and testing standards. Automatically applied when working with Python files.

prd

13
from tae0y/python-project-template

Generate high-quality Product Requirements Documents (PRDs) for software systems and AI-powered features. Includes executive summaries, user stories, technical specifications, and risk analysis.