视觉画布设计
canvas-design
基于设计原则创作静态视觉作品,用于海报与品牌图形。
oss-ready【文档与办公】Transform a project into a professional open-source repository by adding LICENSE, README, CONTRIBUTING, CODE_OF_CONDUCT, SECURITY, and GitHub issue/PR templates. Don't use for documentation overhauls, landing-page generation, or registry publishing.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Transform a project into a professional open-source repository with standard community files and GitHub templates.
Two terms are used throughout:
PH='\[(YEAR|COPYRIGHT HOLDER|INSERT [A-Z ]+)\]|TODO|TBD|FIXME' in a created file, or in a line the run added to an existing file.Prerequisites: a git repository on a named branch with an origin remote. Run the block in references/repo-sync.md once, before Step 0. It stops at the first failure:
git rev-parse --git-dir fails (not a git repository).git symbolic-ref --quiet --short HEAD fails (detached HEAD), before any stash or sync.git remote get-url origin fails.git status --porcelain prints a line, stash with git stash push -u.git fetch origin && git pull --rebase origin "$branch".git stash pop --index.On a non-zero exit, print the final report with BLOCKED and the recovery commands the block printed. Never discard changes. If the only failure is the missing origin and the user approves continuing, go to Step 0 and list Repo Sync skipped (no origin) under Uncertainty:.
Before Step 0, check
references/edge-cases.md. If a case matches the repo, handle it as written there first.
git branch --show-current.git symbolic-ref --short refs/remotes/origin/HEAD, without the origin/ prefix. If that fails, use main, or master when only master exists.oss, stay on it and go to Step 1.feature/ when git branch -a --format='%(refname:short)' lists more feature/ than feat/ branches; otherwise feat/.<prefix>oss-ready exists, ask the user to reuse it or to give another name. Never reset an existing branch.git switch -c <prefix>oss-ready, or git switch <name> to reuse. If it fails, stop with BLOCKED.Record the stack, purpose, existing files, license, repo URL, README language, visibility and fill values, as references/file-specs.md → Analysis values describes. Ask for the security and conduct contacts in one question. If no stack is detectable, ask which stack to assume.
Write README.md and CONTRIBUTING.md from the Step 1 values. Copy LICENSE from assets/LICENSE-MIT unless one exists or the user names another license. Copy CODE_OF_CONDUCT.md (Contributor Covenant 2.0) and SECURITY.md from assets/. Replace each placeholder with its Step 1 value. Section lists and per-file rules: references/file-specs.md.
Take every usage example from the repo's code, scripts or --help output. Never invent a command or contact. A section with no source in the code is left out and listed under Manual review.
Copy each missing file from assets/.github/: ISSUE_TEMPLATE/bug_report.md, ISSUE_TEMPLATE/feature_request.md, PULL_REQUEST_TEMPLATE.md. Keep every existing file and workflow under .github/ unchanged.
Create each missing file. Skip rules and contents: references/file-specs.md → docs/.
docs/
├── ARCHITECTURE.md # System design, components
├── DEVELOPMENT.md # Dev setup, debugging
├── DEPLOYMENT.md # Production deployment
└── CHANGELOG.md # Version history (skip when a root CHANGELOG.md exists)
Add each missing license, description and repository field to the root manifest. Never overwrite a field that has a value. Parse the file after the edit. Per-stack fields and parse commands: references/file-specs.md → Project metadata.
Append each missing pattern for the stack from references/file-specs.md → .gitignore. Check one pattern with grep -qxF '<pattern>' .gitignore. Never remove a line.
pass, fail or not applicable with its reason.PH as defined in Placeholder above. Run the placeholder grep on each created file: grep -nE "$PH" <file>.git diff -U0 -- <file> | grep -E '^\+' | grep -E "$PH".git status --porcelain. Confirm that no line starts with D or D .Do not commit or push. The user reviews and commits the branch.
After each of Steps 1-7, print a report in this format (example: references/final-report.md):
◆ [Step Name] ([step N of 7] — [context])
··································································
[Check 1]: √ pass
[Check 2]: × fail — [reason]
[Criteria]: √ N/M met
____________________________
Result: PASS | FAIL | PARTIAL
Name each check after what the step validates. Step 0 gets no report. If Step 0 or 1 fails, stop with BLOCKED. If one of Steps 2-6 reports FAIL or PARTIAL, continue; the run ends PARTIAL. Step 7 runs whenever Step 2 started.
Print one final report in the chat after the last step report; write a file only on request. Four parts, in order:
Result: the status word, the repo and branch, and the reason for PARTIAL or BLOCKED.Evidence: files created and updated, and the result of each Step 7 check that ran.Uncertainty: placeholders left, checks not run and why, and untested behavior.Decision: the approval needed, or No approval needed., then each remaining user action.Apply the first status rule that matches:
BLOCKED: the run stopped before Step 7 and no file in the target repo was created or changed.PARTIAL: an applicable check failed or did not run, a placeholder remains, a step reported FAIL or PARTIAL, or the run stopped before Step 7 finished.COMPLETE: every applicable check passed, the placeholder grep found no match, and Steps 1-7 each reported PASS.not applicable is allowed only for a reason listed in references/final-report.md, with the outcome table, examples and reader checks. Any other skipped check counts as not run.
Step 7 runs each check with test -f, grep, git or a visual check.
LICENSE exists. A new MIT file passes grep -c "MIT License" LICENSE (or the named license's title). An existing one is unchanged: git diff --quiet -- LICENSE.README.md is at least 40 lines with Installation, Usage, and License sections. In English, grep -ciE "^#+ .*(install|usage|license)" README.md returns >= 3; in another language, check the headings visually.CONTRIBUTING.md references the issue tracker plus a branching/PR workflow: grep -iE "issue|pull request|branch" CONTRIBUTING.md.CODE_OF_CONDUCT.md mentions the Contributor Covenant: grep -i "contributor covenant" CODE_OF_CONDUCT.md.SECURITY.md lists a vulnerability-reporting contact: grep -E "@|https?://" SECURITY.md..github/ISSUE_TEMPLATE/bug_report.md and feature_request.md exist with YAML frontmatter (name:, about:)..github/PULL_REQUEST_TEMPLATE.md contains a checklist (- [ ]).docs/ file the run created starts with a # heading: head -1 <file>..gitignore contains each Step 6 pattern for the stack.package.json, pyproject.toml, Cargo.toml) declares license, description, and repository, and still parses.grep finds no match.Result: and a status word, has the other three parts, and passes the reader checks in references/final-report.md.A complete run on a TypeScript CLI with a partial README.md ends like this:
Result: COMPLETE — acme/tsgrep on feat/oss-ready
Evidence:
Created: LICENSE (MIT, 2026 Jane Doe), CONTRIBUTING.md,
CODE_OF_CONDUCT.md (conduct@acme.dev), SECURITY.md (security@acme.dev),
.github/ISSUE_TEMPLATE/bug_report.md, feature_request.md,
.github/PULL_REQUEST_TEMPLATE.md, docs/ (4 files)
Updated: README.md (+ Quick Start, Usage, License badge),
package.json (+ license, repository), .gitignore (+ dist/, .env)
Acceptance criteria: 13/13 pass. Placeholder grep: no matches. No deleted files.
Uncertainty: README commands copied from package.json scripts, not executed.
Decision: No approval needed.
Remaining action: confirm both contact addresses are monitored.
Remaining action: review and commit feat/oss-ready.
Before printing, confirm each listed file exists (test -f).
Full table with detection and status effects: references/edge-cases.md. In short:
.github/ file, or user content in CODE_OF_CONDUCT.md or SECURITY.md.origin, or has no detectable stack.CHANGELOG.md.assets/: LICENSE-MIT, CODE_OF_CONDUCT.md (Contributor Covenant 2.0), SECURITY.md, and .github/ issue and PR templatesreferences/repo-sync.md: the Repo Sync blockreferences/file-specs.md: analysis values, per-file content, fill values, metadata, .gitignorereferences/final-report.md: status rules, outcome table, examples, reader checksreferences/edge-cases.md: detection, handling and status per edge case