project-init 0.3.0__py3-none-any.whl
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.
- project_init/__init__.py +4 -0
- project_init/__main__.py +662 -0
- project_init/mcps.py +57 -0
- project_init/scaffold.py +374 -0
- project_init/templates/base/AGENTS.md.tmpl +50 -0
- project_init/templates/base/CLAUDE.md.tmpl +16 -0
- project_init/templates/base/CONTRIBUTING.md.tmpl +55 -0
- project_init/templates/base/GEMINI.md.tmpl +16 -0
- project_init/templates/base/LICENSE.tmpl +231 -0
- project_init/templates/base/SECURITY.md.tmpl +26 -0
- project_init/templates/base/docs/explanation/index.md +9 -0
- project_init/templates/base/docs/how-to/index.md +7 -0
- project_init/templates/base/docs/index.md.tmpl +20 -0
- project_init/templates/base/docs/reference/index.md +13 -0
- project_init/templates/base/docs/tutorials/index.md +7 -0
- project_init/templates/base/dot_claude/agents/README.md +30 -0
- project_init/templates/base/dot_claude/config.yaml.tmpl +31 -0
- project_init/templates/base/dot_claude/docs/README.md +26 -0
- project_init/templates/base/dot_claude/docs/adr/adr-001-memory-stack.md.tmpl +22 -0
- project_init/templates/base/dot_claude/docs/adr/adr-002-mcp-choices.md.tmpl +32 -0
- project_init/templates/base/dot_claude/docs/adr/adr-template.md +29 -0
- project_init/templates/base/dot_claude/docs/development/conventions.md.tmpl +31 -0
- project_init/templates/base/dot_claude/docs/development/testing.md +25 -0
- project_init/templates/base/dot_claude/docs/guides/developer-onboarding.md +110 -0
- project_init/templates/base/dot_claude/docs/guides/issue-metadata.md +27 -0
- project_init/templates/base/dot_claude/docs/guides/secrets.md +50 -0
- project_init/templates/base/dot_claude/docs/guides/using-memory.md +36 -0
- project_init/templates/base/dot_claude/hooks/README.md +15 -0
- project_init/templates/base/dot_claude/hooks/agent_guard_adapter.py.tmpl +64 -0
- project_init/templates/base/dot_claude/hooks/dag_workflow.py +610 -0
- project_init/templates/base/dot_claude/memory/MEMORY.md.tmpl +11 -0
- project_init/templates/base/dot_claude/memory/README.md +51 -0
- project_init/templates/base/dot_claude/memory/SCHEMA.md +52 -0
- project_init/templates/base/dot_claude/memory/feedback_conventions.md +11 -0
- project_init/templates/base/dot_claude/memory/project_context.md.tmpl +11 -0
- project_init/templates/base/dot_claude/memory/user_role.md +7 -0
- project_init/templates/base/dot_claude/project-init.md.tmpl +174 -0
- project_init/templates/base/dot_claude/rules/go.md +14 -0
- project_init/templates/base/dot_claude/rules/hooks.md +30 -0
- project_init/templates/base/dot_claude/rules/node.md +17 -0
- project_init/templates/base/dot_claude/rules/python.md +25 -0
- project_init/templates/base/dot_claude/scripts/README.md +15 -0
- project_init/templates/base/dot_claude/scripts/create_issue.sh +577 -0
- project_init/templates/base/dot_claude/scripts/create_nojira_pr.sh +3 -0
- project_init/templates/base/dot_claude/scripts/finish_pr.sh +3 -0
- project_init/templates/base/dot_claude/scripts/install_hooks.sh +55 -0
- project_init/templates/base/dot_claude/scripts/monitor_pr.sh +270 -0
- project_init/templates/base/dot_claude/scripts/promote_review.sh +3 -0
- project_init/templates/base/dot_claude/scripts/push_branch.sh +5 -0
- project_init/templates/base/dot_claude/scripts/push_wiki.sh +34 -0
- project_init/templates/base/dot_claude/scripts/setup_github.sh +219 -0
- project_init/templates/base/dot_claude/scripts/start_issue.sh +134 -0
- project_init/templates/base/dot_claude/settings.json.tmpl +83 -0
- project_init/templates/base/dot_claude/skills/README.md +12 -0
- project_init/templates/base/dot_claude/skills/plan/SKILL.md.tmpl +40 -0
- project_init/templates/base/dot_claude/vault/README.md +21 -0
- project_init/templates/base/dot_claude/vault/decisions/README.md +22 -0
- project_init/templates/base/dot_claude/vault/design/README.md +3 -0
- project_init/templates/base/dot_claude/vault/knowledge/README.md +5 -0
- project_init/templates/base/dot_claude/vault/sessions/README.md +5 -0
- project_init/templates/base/dot_devcontainer/devcontainer.json.tmpl +17 -0
- project_init/templates/base/dot_devcontainer/post-create.sh.tmpl +31 -0
- project_init/templates/base/dot_env.example.tmpl +13 -0
- project_init/templates/base/dot_github/CODEOWNERS.tmpl +12 -0
- project_init/templates/base/dot_github/ISSUE_TEMPLATE/bug.yml +98 -0
- project_init/templates/base/dot_github/ISSUE_TEMPLATE/chore.yml +82 -0
- project_init/templates/base/dot_github/ISSUE_TEMPLATE/config.yml +5 -0
- project_init/templates/base/dot_github/ISSUE_TEMPLATE/docs.yml +84 -0
- project_init/templates/base/dot_github/ISSUE_TEMPLATE/feature.yml +87 -0
- project_init/templates/base/dot_github/ISSUE_TEMPLATE/test.yml +90 -0
- project_init/templates/base/dot_github/copilot-instructions.md.tmpl +25 -0
- project_init/templates/base/dot_github/hooks/commit-msg +52 -0
- project_init/templates/base/dot_github/hooks/pre-commit +16 -0
- project_init/templates/base/dot_github/hooks/pre-push +51 -0
- project_init/templates/base/dot_github/pull_request_template.md +22 -0
- project_init/templates/base/dot_github/workflows/board-automation.yml +232 -0
- project_init/templates/base/dot_github/workflows/ci.yml.tmpl +204 -0
- project_init/templates/base/dot_github/workflows/docs.yml.tmpl +98 -0
- project_init/templates/base/dot_github/workflows/issue-validation.yml +72 -0
- project_init/templates/base/dot_github/workflows/review-status.yml +48 -0
- project_init/templates/base/dot_github/workflows/validate-pr.yml +103 -0
- project_init/templates/base/dot_gitignore.tmpl +41 -0
- project_init/templates/base/dot_golangci.yml.tmpl +20 -0
- project_init/templates/base/dot_vscode/extensions.json.tmpl +10 -0
- project_init/templates/base/dot_vscode/settings.json.tmpl +8 -0
- project_init/templates/base/eslint.config.mjs.tmpl +29 -0
- project_init/templates/base/justfile.tmpl +95 -0
- project_init/templates/base/mise.toml.tmpl +20 -0
- project_init/templates/base/mkdocs.yml.tmpl +32 -0
- project_init/templates/base/renovate.json +14 -0
- project_init/templates/base/ruff.toml.tmpl +31 -0
- project_init/templates/base/typedoc.json.tmpl +14 -0
- project_init/templates/codex/dot_agents/skills/add_adr/SKILL.md +33 -0
- project_init/templates/codex/dot_agents/skills/add_command/SKILL.md +63 -0
- project_init/templates/codex/dot_agents/skills/add_hook/SKILL.md +112 -0
- project_init/templates/codex/dot_agents/skills/audit/SKILL.md +146 -0
- project_init/templates/codex/dot_agents/skills/create_issue/SKILL.md +59 -0
- project_init/templates/codex/dot_agents/skills/github_workflow/SKILL.md +80 -0
- project_init/templates/codex/dot_agents/skills/request_review/SKILL.md +19 -0
- project_init/templates/codex/dot_agents/skills/review/SKILL.md +17 -0
- project_init/templates/codex/dot_agents/skills/save_memory/SKILL.md +17 -0
- project_init/templates/codex/dot_agents/skills/session_summary/SKILL.md +35 -0
- project_init/templates/codex/dot_agents/skills/start_task/SKILL.md +48 -0
- project_init/templates/codex/dot_agents/skills/status/SKILL.md +15 -0
- project_init/templates/codex/dot_codex/hooks.json.tmpl +17 -0
- project_init/templates/fallback/dot_claude/hooks/github_command_guard.sh +11 -0
- project_init/templates/fallback/dot_claude/hooks/post_edit_lint.sh +58 -0
- project_init/templates/fallback/dot_claude/hooks/pre_commit_gate.sh +81 -0
- project_init/templates/fallback/dot_claude/hooks/prod_guard.py +140 -0
- project_init/templates/fallback/dot_claude/hooks/session_setup.sh +62 -0
- project_init/templates/fallback/dot_claude/hooks/workflow_state_reminder.sh +72 -0
- project_init/templates/fallback/dot_claude/skills/INDEX.md +28 -0
- project_init/templates/fallback/dot_claude/skills/add_adr/SKILL.md +33 -0
- project_init/templates/fallback/dot_claude/skills/add_command/SKILL.md +63 -0
- project_init/templates/fallback/dot_claude/skills/add_hook/SKILL.md +112 -0
- project_init/templates/fallback/dot_claude/skills/audit/SKILL.md +146 -0
- project_init/templates/fallback/dot_claude/skills/create_issue/SKILL.md +59 -0
- project_init/templates/fallback/dot_claude/skills/github_workflow/SKILL.md +80 -0
- project_init/templates/fallback/dot_claude/skills/request_review/SKILL.md +19 -0
- project_init/templates/fallback/dot_claude/skills/review/SKILL.md +17 -0
- project_init/templates/fallback/dot_claude/skills/save_memory/SKILL.md +17 -0
- project_init/templates/fallback/dot_claude/skills/session_summary/SKILL.md +35 -0
- project_init/templates/fallback/dot_claude/skills/start_task/SKILL.md +48 -0
- project_init/templates/fallback/dot_claude/skills/status/SKILL.md +15 -0
- project_init/templates/gemini/dot_agents/skills/add_adr/SKILL.md +33 -0
- project_init/templates/gemini/dot_agents/skills/add_command/SKILL.md +63 -0
- project_init/templates/gemini/dot_agents/skills/add_hook/SKILL.md +112 -0
- project_init/templates/gemini/dot_agents/skills/audit/SKILL.md +146 -0
- project_init/templates/gemini/dot_agents/skills/create_issue/SKILL.md +59 -0
- project_init/templates/gemini/dot_agents/skills/github_workflow/SKILL.md +80 -0
- project_init/templates/gemini/dot_agents/skills/request_review/SKILL.md +19 -0
- project_init/templates/gemini/dot_agents/skills/review/SKILL.md +17 -0
- project_init/templates/gemini/dot_agents/skills/save_memory/SKILL.md +17 -0
- project_init/templates/gemini/dot_agents/skills/session_summary/SKILL.md +35 -0
- project_init/templates/gemini/dot_agents/skills/start_task/SKILL.md +48 -0
- project_init/templates/gemini/dot_agents/skills/status/SKILL.md +15 -0
- project_init/templates/gemini/dot_claude/scripts/setup_gemini.sh.tmpl +16 -0
- project_init/templates/gemini/dot_gemini-extension/commands/add_adr.toml +5 -0
- project_init/templates/gemini/dot_gemini-extension/commands/add_command.toml +5 -0
- project_init/templates/gemini/dot_gemini-extension/commands/add_hook.toml +5 -0
- project_init/templates/gemini/dot_gemini-extension/commands/audit.toml +5 -0
- project_init/templates/gemini/dot_gemini-extension/commands/create_issue.toml +5 -0
- project_init/templates/gemini/dot_gemini-extension/commands/github_workflow.toml +5 -0
- project_init/templates/gemini/dot_gemini-extension/commands/request_review.toml +5 -0
- project_init/templates/gemini/dot_gemini-extension/commands/review.toml +5 -0
- project_init/templates/gemini/dot_gemini-extension/commands/save_memory.toml +5 -0
- project_init/templates/gemini/dot_gemini-extension/commands/session_summary.toml +5 -0
- project_init/templates/gemini/dot_gemini-extension/commands/start_task.toml +5 -0
- project_init/templates/gemini/dot_gemini-extension/commands/status.toml +5 -0
- project_init/templates/gemini/dot_gemini-extension/gemini-extension.json.tmpl +6 -0
- project_init/templates/gemini/dot_gemini-extension/hooks/hooks.json.tmpl +18 -0
- project_init/templates/graphify/dot_claude/docs/guides/using-graphify.md +37 -0
- project_init/templates/graphify/dot_claude/rules/graphify.md +18 -0
- project_init/templates/graphify/dot_claude/scripts/setup_graphify.sh +40 -0
- project_init/templates/obsidian/dot_claude/scripts/lint_memory.sh +115 -0
- project_init/templates/obsidian/dot_claude/vault/decisions/adr-000-project-setup.md.tmpl +22 -0
- project_init/templates/obsidian/dot_claude/vault/dot_obsidian/README.md +31 -0
- project_init/templates/obsidian/dot_claude/vault/dot_obsidian/app.json +6 -0
- project_init/templates/obsidian/dot_claude/vault/dot_obsidian/community-plugins.json +1 -0
- project_init/templates/obsidian/dot_claude/vault/dot_obsidian/core-plugins.json +1 -0
- project_init/templates/obsidian/dot_claude/vault/log.md +6 -0
- project_init/templates/obsidian/dot_claude/vault/templates/decision.md +16 -0
- project_init/templates/obsidian/dot_claude/vault/templates/design-note.md +14 -0
- project_init/templates/obsidian/dot_claude/vault/templates/knowledge-note.md +12 -0
- project_init/templates/obsidian/dot_claude/vault/templates/session-note.md +16 -0
- project_init/templates/presets/obsidian-graphify.toml +16 -0
- project_init/templates/presets/obsidian-only.toml +14 -0
- project_init/upgrade.py +569 -0
- project_init-0.3.0.dist-info/METADATA +342 -0
- project_init-0.3.0.dist-info/RECORD +173 -0
- project_init-0.3.0.dist-info/WHEEL +4 -0
- project_init-0.3.0.dist-info/entry_points.txt +2 -0
- project_init-0.3.0.dist-info/licenses/LICENSE +201 -0
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: project-init
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: Scaffolder for agentic-development infrastructure inside any project
|
|
5
|
+
Project-URL: Repository, https://github.com/VytCepas/project-init
|
|
6
|
+
Project-URL: Documentation, https://vytcepas.github.io/project-init/
|
|
7
|
+
Project-URL: Changelog, https://github.com/VytCepas/project-init/releases
|
|
8
|
+
Project-URL: Issues, https://github.com/VytCepas/project-init/issues
|
|
9
|
+
Author-email: Vytautas Čepas <vyt.cepas.ve@gmail.com>
|
|
10
|
+
License: Apache-2.0
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: agents,claude-code,graphify,obsidian,scaffolding
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Environment :: Console
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
17
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Topic :: Software Development :: Code Generators
|
|
22
|
+
Requires-Python: >=3.11
|
|
23
|
+
Requires-Dist: rich>=13.7
|
|
24
|
+
Provides-Extra: dev
|
|
25
|
+
Requires-Dist: pytest-xdist>=3.0; extra == 'dev'
|
|
26
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
27
|
+
Requires-Dist: ruff>=0.4; extra == 'dev'
|
|
28
|
+
Provides-Extra: docs
|
|
29
|
+
Requires-Dist: mkdocs-material>=9.7.6; extra == 'docs'
|
|
30
|
+
Description-Content-Type: text/markdown
|
|
31
|
+
|
|
32
|
+
# project-init
|
|
33
|
+
|
|
34
|
+
[](https://github.com/VytCepas/project-init/actions/workflows/ci.yml)
|
|
35
|
+
|
|
36
|
+
Scaffolder for agentic-development infrastructure. One command drops a `.claude/` folder into any project so Claude Code (and other agents) have memory, docs, hooks, and curated MCPs ready to go.
|
|
37
|
+
|
|
38
|
+
## What it gives you
|
|
39
|
+
|
|
40
|
+
Inside any target project:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
<your-project>/
|
|
44
|
+
├── CLAUDE.md # canonical agent instructions; points into .claude/
|
|
45
|
+
├── AGENTS.md # thin redirect to CLAUDE.md for non-Claude agents
|
|
46
|
+
└── .claude/
|
|
47
|
+
├── project-init.md # workflow + conventions
|
|
48
|
+
├── config.yaml # record of options chosen at init
|
|
49
|
+
├── settings.json # Claude Code settings + hooks
|
|
50
|
+
├── skills/ agents/ hooks/ scripts/ rules/
|
|
51
|
+
├── memory/
|
|
52
|
+
│ ├── MEMORY.md # grep-able memory index
|
|
53
|
+
└── vault/ # Obsidian vault (humans)
|
|
54
|
+
├── decisions/ design/ sessions/ knowledge/
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Principles:
|
|
58
|
+
- **One folder, `.claude/`**, for everything agentic. Project root stays clean.
|
|
59
|
+
- **Obsidian vault for humans, Graphify (optional) for agents** — separated on disk.
|
|
60
|
+
- **Deterministic-first** — hooks and scripts are bash/python. LLM calls only where generative.
|
|
61
|
+
- **Claude-first, portable core** — built and tested for Claude Code; other agents get instructions, not enforcement. See [Agent support tiers](#agent-support-tiers).
|
|
62
|
+
- **`bun` and `uv` only** — no `npm`/`npx`/`pip`/`venv` anywhere in scaffolded projects.
|
|
63
|
+
|
|
64
|
+
## Agent support tiers
|
|
65
|
+
|
|
66
|
+
This is **firstly a Claude Code scaffolder**. It aims to be agent-agnostic where
|
|
67
|
+
that is cheap, but it is not natively so — be explicit about what each agent gets:
|
|
68
|
+
|
|
69
|
+
| Tier | What you get | Applies to |
|
|
70
|
+
|---|---|---|
|
|
71
|
+
| **Native (Claude Code)** | Everything: deterministic hooks (lifecycle guard, pre-commit gate), skills invoked as `/commands`, settings wiring | Claude Code only |
|
|
72
|
+
| **Instructions-only** | `AGENTS.md` / `GEMINI.md` redirect to the canonical `CLAUDE.md`; agents read conventions but **no hook fires and nothing is enforced** for them | Codex, Gemini CLI, Cursor, and other AGENTS.md-aware tools |
|
|
73
|
+
| **Portable regardless** | Lifecycle scripts (plain bash), memory and vault (plain markdown), git hooks (`commit-msg`, `pre-push`) — agent-independent by construction; git hooks bind once `.claude/scripts/install_hooks.sh` has run in the clone (server-side actions need branch protection) | Everything, including Ollama-based agents |
|
|
74
|
+
|
|
75
|
+
Two honest caveats:
|
|
76
|
+
|
|
77
|
+
- Hook enforcement and skill invocation **do not exist outside Claude Code**. An
|
|
78
|
+
agent reading `AGENTS.md` is asked to follow the rules; nothing makes it.
|
|
79
|
+
The git hooks and CI checks are the only enforcement that binds all agents.
|
|
80
|
+
- **Automated testing covers the Claude Code artifacts only.** The test suite
|
|
81
|
+
validates settings schema, skills, hooks, and rendered files; no other agent
|
|
82
|
+
is exercised in CI.
|
|
83
|
+
|
|
84
|
+
## Install (one-time)
|
|
85
|
+
|
|
86
|
+
Two install paths — pick by how you'll invoke it:
|
|
87
|
+
|
|
88
|
+
**CLI-only, from PyPI** (after the first published release; ADR-011). Gives
|
|
89
|
+
you the `project-init` command — no `/project-init` slash command:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
uv tool install project-init # or one-off: uvx project-init .
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Full setup, from git** — adds the Claude Code slash command:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
curl -sSL https://raw.githubusercontent.com/VytCepas/project-init/main/install.sh | bash
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
This installs [`uv`](https://docs.astral.sh/uv/) if missing, clones the repo to `~/.local/share/project-init` (override with `PROJECT_INIT_HOME=...`) **pinned to the latest tagged release**, and writes a user-level slash command at `~/.claude/commands/project-init.md`.
|
|
102
|
+
|
|
103
|
+
Pin a specific version, or opt into the unreleased development head:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
PROJECT_INIT_REF=v0.3.0 bash -c "$(curl -sSL https://raw.githubusercontent.com/VytCepas/project-init/main/install.sh)"
|
|
107
|
+
PROJECT_INIT_REF=main bash -c "$(curl -sSL https://raw.githubusercontent.com/VytCepas/project-init/main/install.sh)"
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Direct tool install without the slash command (any pinned tag):
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
uv tool install git+https://github.com/VytCepas/project-init@v0.3.0
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Distribution rationale: [ADR-008](https://github.com/VytCepas/project-init/blob/main/docs/adr/adr-008-distribution-channel.md) (git channel), [ADR-011](https://github.com/VytCepas/project-init/blob/main/docs/adr/adr-011-pypi-trusted-publishing.md) (PyPI via trusted publishing).
|
|
117
|
+
|
|
118
|
+
## Use
|
|
119
|
+
|
|
120
|
+
### Option 1: Inside a Claude Code session (interactive)
|
|
121
|
+
|
|
122
|
+
After the **git install** (`install.sh`), a `/project-init` slash command is available in any Claude Code session:
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
/project-init
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
This runs the interactive wizard in the current project directory. It asks for project name, language, memory stack, and MCPs — then scaffolds `.claude/` for you.
|
|
129
|
+
|
|
130
|
+
### Option 2: From a shell (non-interactive, for CI / scripts)
|
|
131
|
+
|
|
132
|
+
With the PyPI install, plain `project-init . --non-interactive …` (or
|
|
133
|
+
`uvx project-init . …`) works anywhere. With the git install:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
cd your-project
|
|
137
|
+
uvx --from ~/.local/share/project-init project-init . \
|
|
138
|
+
--non-interactive \
|
|
139
|
+
--preset obsidian-only \
|
|
140
|
+
--name my-app \
|
|
141
|
+
--description "an app" \
|
|
142
|
+
--language python \
|
|
143
|
+
--mcps context7
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
The wizard asks (interactive mode only):
|
|
147
|
+
|
|
148
|
+
- Project name / description
|
|
149
|
+
- Language (Python/Node/Go/none) — drives `lint_command`, `format_command`, `test_command`
|
|
150
|
+
- Memory stack — Obsidian-only or Obsidian + Graphify (recommended for code-heavy projects)
|
|
151
|
+
- Core MCPs (Context7)
|
|
152
|
+
- Database MCP — none / Postgres / SQLite
|
|
153
|
+
- Browser automation — Playwright (yes/no)
|
|
154
|
+
- Owner/team (`--owner`) — default CODEOWNERS owner, SECURITY contact, and LICENSE copyright holder (e.g. `@org/team`)
|
|
155
|
+
- License (`--license mit|apache-2.0|proprietary|none`) — renders a LICENSE with the current year and the owner (or project name); `none` skips the file
|
|
156
|
+
- No-plugin fallback (`--no-plugin`) — copies the shared hooks/skills into `.claude/` and wires them in `settings.json` instead of relying on the `project-init-workflow` plugin (offline / no-trust environments)
|
|
157
|
+
- Devcontainer (`--devcontainer`) — renders `.devcontainer/` for Codespaces, fresh clones, and remote agent containers (see below)
|
|
158
|
+
- Agents (`--agents claude,codex,gemini,ollama`) — which agents the project supports; default `claude`. Codex gets the shared skills at `.agents/skills/` plus the command guard via `.codex/hooks.json`; Gemini CLI gets a project extension (workflow `/commands` + guard; link once with `.claude/scripts/setup_gemini.sh`); Ollama-based agents are instructions-level only. Only the Claude path is functionally CI-tested — overlays are contract-tested on the rendered files
|
|
159
|
+
- Toolchain pinning (`--mise`) — renders `mise.toml` pinning runtime/tool versions. Ownership rule: mise owns versions only; uv/bun own dependencies, just owns commands, `.env` owns environment
|
|
160
|
+
- Editor config (`--vscode`) — renders `.vscode/extensions.json` + a minimal `settings.json` (format-on-save wired to the preset formatter); nothing personal, and the `.gitignore` shares only these two files
|
|
161
|
+
|
|
162
|
+
Every preset also scaffolds the env/secret pattern: `.env.example`
|
|
163
|
+
documents the variables and their loading order, `.env` is gitignored, and
|
|
164
|
+
`.claude/docs/guides/secrets.md` covers when and how to escalate to an org
|
|
165
|
+
secret manager (sops / 1Password CLI / Doppler) — none is installed, that
|
|
166
|
+
choice is org-specific.
|
|
167
|
+
|
|
168
|
+
Every preset also ships governance starters: `.github/CODEOWNERS`,
|
|
169
|
+
`CONTRIBUTING.md` (setup, `just --list` command surface, branch/PR
|
|
170
|
+
conventions, review flow), and `SECURITY.md`. After pushing to GitHub, run
|
|
171
|
+
`.claude/scripts/setup_github.sh --protect` inside the project to apply
|
|
172
|
+
baseline branch protection (require CI green, require PR review, block
|
|
173
|
+
force-push) — unprotected default branches undermine the workflow
|
|
174
|
+
enforcement everything else sets up.
|
|
175
|
+
|
|
176
|
+
Your answers are recorded in `.claude/config.yaml`. On the **first** scaffold into a project that already has files, your existing files are never clobbered: when a generated file (e.g. a hand-written `CLAUDE.md`) would differ, the new render is written alongside as a `<file>.new` sibling for you to merge, and the run prints which files were preserved. On a **re-run** (config already present) it refreshes the files project-init manages and never overwrites your `memory/` or `vault/` notes. With `--strict`, templates are rendered and validated in a temporary directory first, then the validated scaffold files are merged into the target; strict mode is not a whole-directory replacement.
|
|
177
|
+
|
|
178
|
+
### Remote and web agent sessions
|
|
179
|
+
|
|
180
|
+
Scaffolded projects bootstrap themselves in ephemeral environments
|
|
181
|
+
(Claude Code on the web, CI agents, fresh clones):
|
|
182
|
+
|
|
183
|
+
- A **SessionStart hook** (`.claude/hooks/session_setup.sh`) syncs
|
|
184
|
+
dependencies when a session opens in a cold environment — `just setup`
|
|
185
|
+
when available, falling back to `uv sync` / `bun install` /
|
|
186
|
+
`go mod download`. Warm sessions are a no-op: a content stamp of the
|
|
187
|
+
dependency manifests short-circuits before any tool runs, and a failed
|
|
188
|
+
bootstrap warns without blocking the session.
|
|
189
|
+
- The opt-in **`--devcontainer`** flag renders a minimal
|
|
190
|
+
`.devcontainer/` (Ubuntu base image; post-create installs `just` plus
|
|
191
|
+
the language toolchain and reuses the same bootstrap) — one consistent
|
|
192
|
+
environment for new colleagues, Codespaces, and agent containers.
|
|
193
|
+
|
|
194
|
+
## Example command
|
|
195
|
+
|
|
196
|
+
Scaffold an Obsidian-only Python project with Context7 MCP:
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
uvx --from ~/.local/share/project-init project-init /path/to/my-project \
|
|
200
|
+
--non-interactive \
|
|
201
|
+
--preset obsidian-only --name example --description "example python project" \
|
|
202
|
+
--language python --mcps context7
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
The test suite validates this command works correctly — see `TestREADMEExampleCommand` in `tests/test_readme_examples.py`.
|
|
206
|
+
|
|
207
|
+
## Update
|
|
208
|
+
|
|
209
|
+
Re-run the installer — it moves the clone to the latest tagged release:
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
curl -sSL https://raw.githubusercontent.com/VytCepas/project-init/main/install.sh | bash
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
(`PROJECT_INIT_REF=main` for the development head; releases are cut by
|
|
216
|
+
tagging `vX.Y.Z`, which triggers the release workflow.)
|
|
217
|
+
|
|
218
|
+
### Upgrading a scaffolded project
|
|
219
|
+
|
|
220
|
+
Scaffolded projects are snapshots — as project-init improves, they drift.
|
|
221
|
+
After updating the tool itself, re-render any project from its recorded
|
|
222
|
+
config and see what changed:
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
project-init upgrade /path/to/my-project # drift report only, touches nothing
|
|
226
|
+
project-init upgrade /path/to/my-project --apply # apply the changes
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
The report classifies every template-owned file:
|
|
230
|
+
|
|
231
|
+
| State | Meaning | `--apply` does |
|
|
232
|
+
|---|---|---|
|
|
233
|
+
| new | not in your project | creates it |
|
|
234
|
+
| changed | drifted, but you never edited it | updates it |
|
|
235
|
+
| conflict | drifted **and** locally edited | writes the new render as a `<file>.new` sibling — your edit is never overwritten |
|
|
236
|
+
| removed | no longer rendered by current templates | nothing (reported only; upgrade never deletes) |
|
|
237
|
+
|
|
238
|
+
`.claude/memory/` and `.claude/vault/` are never compared or touched, and
|
|
239
|
+
`.claude/config.yaml` keeps your hand-edited fields (`project_key`, board
|
|
240
|
+
number) — only its `project_init_version` and the scaffold record are
|
|
241
|
+
refreshed.
|
|
242
|
+
|
|
243
|
+
How it works: scaffolding records the preset, template variables, and a
|
|
244
|
+
content-hash manifest in a `scaffold:` block at the end of
|
|
245
|
+
`.claude/config.yaml`. Upgrade re-renders the same preset at the current
|
|
246
|
+
template version into a staging directory and compares hashes, so user
|
|
247
|
+
edits are distinguishable from upstream template changes. **Migration:**
|
|
248
|
+
projects scaffolded before this record existed are reconstructed from the
|
|
249
|
+
semantic config fields; without recorded hashes, every modified file is
|
|
250
|
+
conservatively treated as a conflict (`.new` sibling). Run `upgrade --apply`
|
|
251
|
+
once and the record is written for next time.
|
|
252
|
+
|
|
253
|
+
## Uninstall
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
rm -rf ~/.local/share/project-init ~/.claude/commands/project-init.md
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
## Troubleshooting
|
|
260
|
+
|
|
261
|
+
**`/usr/bin/env: 'bash\r': No such file or directory`**
|
|
262
|
+
A shell template arrived with CRLF line endings. The repo enforces LF via `.gitattributes`; if you cloned through Windows in a way that converted endings, run `dos2unix install.sh templates/**/*.sh` and re-clone with `git clone --config core.autocrlf=false`.
|
|
263
|
+
|
|
264
|
+
**`uv: command not found` after install**
|
|
265
|
+
The installer adds `~/.local/bin` to PATH for the current process only. Add it to your shell profile: `export PATH="$HOME/.local/bin:$PATH"` in `~/.bashrc` / `~/.zshrc`.
|
|
266
|
+
|
|
267
|
+
**`claude mcp add` fails with `command not found: bunx`**
|
|
268
|
+
The MCP catalog uses [bun](https://bun.sh) instead of npm/npx. Install it once:
|
|
269
|
+
```bash
|
|
270
|
+
curl -fsSL https://bun.sh/install | bash
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
**Hooks silently do nothing on commit**
|
|
274
|
+
The hooks need `python3` on `PATH` (replaces the previous `jq` dependency). They auto-detect `uv run ruff` for uv-managed Python projects and fall back to a system `ruff`.
|
|
275
|
+
|
|
276
|
+
**WSL: phantom permission/CRLF changes when working from Git Bash on Windows**
|
|
277
|
+
Edit and commit from inside WSL (`wsl` then `cd ~/projects/...`). Editing WSL files from Git Bash on Windows mangles executable bits and line endings.
|
|
278
|
+
|
|
279
|
+
**`Unknown preset 'foo'`**
|
|
280
|
+
Run `project-init --help` and pick from `obsidian-only` or `obsidian-graphify` (ADR-009). Custom presets go in `templates/presets/<name>.toml`.
|
|
281
|
+
|
|
282
|
+
## Positioning in the ecosystem
|
|
283
|
+
|
|
284
|
+
Where project-init sits relative to the (fast-moving) community landscape, so
|
|
285
|
+
adopters know what this tool owns and where it defers:
|
|
286
|
+
|
|
287
|
+
- **What this scaffolder owns**: project infrastructure files (CI workflows,
|
|
288
|
+
`.gitignore`, GitHub issue/PR templates and board automation),
|
|
289
|
+
preset composition with deterministic, tested rendering, and the integrated
|
|
290
|
+
GitHub lifecycle (DAG-enforced issue → branch → PR → review → merge). No
|
|
291
|
+
community plugin or scaffolder covers these.
|
|
292
|
+
- **Knowledge-graph memory**: the community has consolidated around
|
|
293
|
+
[Graphify](https://github.com/safishamsi/graphify) for codebase knowledge
|
|
294
|
+
graphs. The `obsidian-graphify` preset wires it in (ADR-009); the
|
|
295
|
+
hand-rolled LightRAG overlay was removed once Graphify landed (PI-172).
|
|
296
|
+
- **Distributing `.claude/` components**: the official
|
|
297
|
+
[Claude Code plugin marketplace](https://code.claude.com/docs/en/discover-plugins)
|
|
298
|
+
is the standard channel for hooks/skills/agents. This repo doubles as a
|
|
299
|
+
marketplace (`.claude-plugin/marketplace.json`) shipping the
|
|
300
|
+
`project-init-workflow` plugin — the project-agnostic skills and guard
|
|
301
|
+
hooks, auto-update included. Scaffolds are **plugin-first** (ADR-010
|
|
302
|
+
cutover): `settings.json` enables the plugin, and a hook or skill fix
|
|
303
|
+
shipped in the plugin reaches every project without re-scaffolding. The
|
|
304
|
+
`--no-plugin` flag restores file copies + local wiring for offline or
|
|
305
|
+
no-marketplace-trust environments; the scaffolder keeps owning project
|
|
306
|
+
files either way.
|
|
307
|
+
- **`AGENTS.md` vs `CLAUDE.md`**: Claude Code still reads only `CLAUDE.md`
|
|
308
|
+
([anthropics/claude-code#34235](https://github.com/anthropics/claude-code/issues/34235)),
|
|
309
|
+
while most other tools read the `AGENTS.md` standard — which is why this
|
|
310
|
+
repo and scaffolded projects keep both: today `AGENTS.md` (and `GEMINI.md`)
|
|
311
|
+
redirect readers to the canonical `CLAUDE.md`; inverting that so `AGENTS.md`
|
|
312
|
+
becomes canonical is planned in #136.
|
|
313
|
+
|
|
314
|
+
## Further reading
|
|
315
|
+
|
|
316
|
+
- [Using project-init in Your Project](https://github.com/VytCepas/project-init/blob/main/docs/guides/using-project-init.md) — full workflow, day-to-day usage, customization, and troubleshooting
|
|
317
|
+
- [Template System](https://github.com/VytCepas/project-init/blob/main/docs/development/template-system.md) — how layers and variables work
|
|
318
|
+
- [Contributing](https://github.com/VytCepas/project-init/blob/main/docs/development/contributing.md) — how to contribute to project-init itself
|
|
319
|
+
|
|
320
|
+
## Layout of this repo
|
|
321
|
+
|
|
322
|
+
```
|
|
323
|
+
project-init/
|
|
324
|
+
├── pyproject.toml # uv-managed, rich-only runtime dep, ruff-only dev
|
|
325
|
+
├── install.sh # bootstrap one-liner
|
|
326
|
+
├── src/project_init/ # wizard CLI + scaffold engine
|
|
327
|
+
├── templates/
|
|
328
|
+
│ ├── base/ # always copied
|
|
329
|
+
│ ├── obsidian/ # Obsidian vault overlay (both presets)
|
|
330
|
+
│ ├── graphify/ # Graphify memory overlay
|
|
331
|
+
│ └── presets/ # toml preset definitions
|
|
332
|
+
├── examples/ # sample scaffolded outputs
|
|
333
|
+
└── tests/ # focused pytest modules by behavior area
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
## Status
|
|
337
|
+
|
|
338
|
+
Actively developed; v0.3.0 is the first PyPI release. Track work in [GitHub Issues](https://github.com/VytCepas/project-init/issues).
|
|
339
|
+
|
|
340
|
+
## License
|
|
341
|
+
|
|
342
|
+
Apache-2.0 — see [LICENSE](https://github.com/VytCepas/project-init/blob/main/LICENSE).
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
project_init/__init__.py,sha256=xvbIF_FyFh4rfRcTuP0Phj_Zzn92rQsZkUhbTWXnYf0,155
|
|
2
|
+
project_init/__main__.py,sha256=w5MPjaYesnsGTQ7WqDtg9XxRnYtTyn28B_2Wh4cI1oo,22795
|
|
3
|
+
project_init/mcps.py,sha256=R6OLwfW_QQB2NZ8Dzca8PdreOzl1pp_ulDsWxzpoTWI,1906
|
|
4
|
+
project_init/scaffold.py,sha256=FnFI5F7F4PyKpjprJQLhWMimOBCWV0GSZGlVCvDZgjs,14596
|
|
5
|
+
project_init/upgrade.py,sha256=q7tysZTcioMFwFyrVQLS76nvBF2loqojPgL924V-We8,21939
|
|
6
|
+
project_init/templates/base/AGENTS.md.tmpl,sha256=275sOO39RDK-8evy0SfaclOPE33E0KscW0rWRNjzp8Y,5128
|
|
7
|
+
project_init/templates/base/CLAUDE.md.tmpl,sha256=XahtVpgaSj8eiRIAC_GdRQPuo5KFb6gZ_j2HgScx5b0,741
|
|
8
|
+
project_init/templates/base/CONTRIBUTING.md.tmpl,sha256=S3_o7UgJ6QHi1GYHZkBQilMNfXCjTHAAk5NjHdvjx-c,1965
|
|
9
|
+
project_init/templates/base/GEMINI.md.tmpl,sha256=Te8Dk5tjl2wRz-HASThmsNqw4F5JRsZEAN66-970QSw,723
|
|
10
|
+
project_init/templates/base/LICENSE.tmpl,sha256=ipKvTfTkf4miGungxJQYlvjR3oYfSfI50-dYPsHgO1I,12965
|
|
11
|
+
project_init/templates/base/SECURITY.md.tmpl,sha256=GSe1UNUWkTS27rdCI1HzmbWj1WPWF9bQPADoc3sWKt8,826
|
|
12
|
+
project_init/templates/base/dot_env.example.tmpl,sha256=9X9r3g4CVThPv72oBBImu86xlKhjYKahatc3hug3gmU,609
|
|
13
|
+
project_init/templates/base/dot_gitignore.tmpl,sha256=TvW3C-hdXab7jgRMQ7jL9QI-BBJh61dYP473ZOT9Lzc,925
|
|
14
|
+
project_init/templates/base/dot_golangci.yml.tmpl,sha256=tjlfDI8hdQTe1MPbFHDw3qzUkd468gzCFoeD8JfD_F0,572
|
|
15
|
+
project_init/templates/base/eslint.config.mjs.tmpl,sha256=zpUxOr6DzA_2pmMjb6S8IqQQBctkOpMR8kyN0nSld0c,1074
|
|
16
|
+
project_init/templates/base/justfile.tmpl,sha256=vdd1rqS2plclbGb8FdH2GpZaEYHlnbvnfY68opP0smg,2784
|
|
17
|
+
project_init/templates/base/mise.toml.tmpl,sha256=Pxnds-g4WuvRzxWr_xeX9HB214OI5hWavDtVVeeDJF4,650
|
|
18
|
+
project_init/templates/base/mkdocs.yml.tmpl,sha256=oZyOy8d2DgaNShWVCBhV7eQe7p11_qyObxD-Tehh8ds,1086
|
|
19
|
+
project_init/templates/base/renovate.json,sha256=eLdaFGodeh0LUHfMLEy_O9IHOYCZsOOi0Yh60IxHuks,320
|
|
20
|
+
project_init/templates/base/ruff.toml.tmpl,sha256=qx62dxmJh1_f2tDYI3QU6sUyhIBeqxUr-QmFXz2Ktw8,1192
|
|
21
|
+
project_init/templates/base/typedoc.json.tmpl,sha256=Ckqh63E0BmF9YgQYLre4MX2Vw2_lgF7OHr6klueX2JM,408
|
|
22
|
+
project_init/templates/base/docs/index.md.tmpl,sha256=w4K-cl995pKI3-NXRE0g599Z3bwYNy0SuOb7qN9YYu4,918
|
|
23
|
+
project_init/templates/base/docs/explanation/index.md,sha256=a-YzQdDK1LWenlU5-zt4iF_yFaWEZvWo_bVuU9B5Szg,371
|
|
24
|
+
project_init/templates/base/docs/how-to/index.md,sha256=42wJexOyrGvCqg4oHV2FnCnLvE0QGfDN3fZ3_a4Djs4,263
|
|
25
|
+
project_init/templates/base/docs/reference/index.md,sha256=Y-dEwKKK6gPYh29UFJAf4cJ5xNaYovj-3A1wKu3KC0U,403
|
|
26
|
+
project_init/templates/base/docs/tutorials/index.md,sha256=c_khMxY-P3-svlvPMJrjTZNK1SjgDxqy-Hnqys5p1CA,244
|
|
27
|
+
project_init/templates/base/dot_claude/config.yaml.tmpl,sha256=d4SII-QbYTb3uUrwUNiTA85zkF-Ghg3coOXMcw9wfBE,1071
|
|
28
|
+
project_init/templates/base/dot_claude/project-init.md.tmpl,sha256=pTBYNqXRsKomLqX1ygvV_Sjg4RQCyKDoW-QVJzAZuZM,9067
|
|
29
|
+
project_init/templates/base/dot_claude/settings.json.tmpl,sha256=xCjCRjJb72BXZL94tSvhaw9JjmFmYmFd3VpJ2wRiysw,2078
|
|
30
|
+
project_init/templates/base/dot_claude/agents/README.md,sha256=DCJgcPWNsQ4a833xsnQe0BEIMS_CtLBwpZJhMknGBLA,1095
|
|
31
|
+
project_init/templates/base/dot_claude/docs/README.md,sha256=M_vTg3CxwXpBgIgg856SvpNWAGRoHH8N3eSWfeZ2POY,923
|
|
32
|
+
project_init/templates/base/dot_claude/docs/adr/adr-001-memory-stack.md.tmpl,sha256=Kcw7RwWXG7JnoZlTFaSjwNLa2UaP8--Av1DRWzR28so,849
|
|
33
|
+
project_init/templates/base/dot_claude/docs/adr/adr-002-mcp-choices.md.tmpl,sha256=psL6Gh0VMKUP7FvhGz0tnyC89j_CgSkL_5dK41UCv8k,1238
|
|
34
|
+
project_init/templates/base/dot_claude/docs/adr/adr-template.md,sha256=xeft-LilfFpDPFRn6vkWU4yuEfof6a5Fr56ye2VxbhI,873
|
|
35
|
+
project_init/templates/base/dot_claude/docs/development/conventions.md.tmpl,sha256=PnvxT3ca38WrGEizThiNMy9a9-vbQTpfKRRhwzbWDwU,1115
|
|
36
|
+
project_init/templates/base/dot_claude/docs/development/testing.md,sha256=BXBLbmCyTwhdQGXHxzUT6_14YQJi8lqtrPU05DqFytY,940
|
|
37
|
+
project_init/templates/base/dot_claude/docs/guides/developer-onboarding.md,sha256=e3ATJFmDUWmUcBeHeS7OZhBDDKNfNk9nkxxLb-CHa04,4165
|
|
38
|
+
project_init/templates/base/dot_claude/docs/guides/issue-metadata.md,sha256=nF-H8J7s6CTXOZBPhQZRThOXt5Ot7W7vJuJtSIgynX4,1167
|
|
39
|
+
project_init/templates/base/dot_claude/docs/guides/secrets.md,sha256=OXGp3QVoqqHsZeE6boOwewuW95XLKxDsbolBEdcqnM4,2472
|
|
40
|
+
project_init/templates/base/dot_claude/docs/guides/using-memory.md,sha256=BeanXCfeoi4n6US6XNeecG-lhjh_b7u35lze9Y3BQZk,1275
|
|
41
|
+
project_init/templates/base/dot_claude/hooks/README.md,sha256=ElBlh7IniLdtYyXq8Vbc9kVL2DACMmKu_eSjwp4_juY,808
|
|
42
|
+
project_init/templates/base/dot_claude/hooks/agent_guard_adapter.py.tmpl,sha256=hucq5XMVljDy4AbfIGJv1byOzeB-lltXvP9qYdR46gw,2164
|
|
43
|
+
project_init/templates/base/dot_claude/hooks/dag_workflow.py,sha256=tsjTgM4Wj9K-5sAgcYweUpmYUTCXoR1jMOE-YqNvyVk,21858
|
|
44
|
+
project_init/templates/base/dot_claude/memory/MEMORY.md.tmpl,sha256=VE2sgZecvnlcxVoCA2DCVpA2OBti-HnRDOjf_cDeB5E,508
|
|
45
|
+
project_init/templates/base/dot_claude/memory/README.md,sha256=_34U2ELYdfU319Omy-GN9H51QIiUmAT5TzSOMAu8vF4,1614
|
|
46
|
+
project_init/templates/base/dot_claude/memory/SCHEMA.md,sha256=XHGRy1lGpgOp4fcVg38ng_5L9zbYczTPRbhTiS-rkQI,1698
|
|
47
|
+
project_init/templates/base/dot_claude/memory/feedback_conventions.md,sha256=q9lIE7vWqoUi9d8VI_Y3hfoAXZBSuFE8rVlm4N4LpEM,296
|
|
48
|
+
project_init/templates/base/dot_claude/memory/project_context.md.tmpl,sha256=X4dLvQFFxJquQaLCH723hCKVKRDOSy3AwGvlAF0bUGs,332
|
|
49
|
+
project_init/templates/base/dot_claude/memory/user_role.md,sha256=y-sIhuL5yOS45ETEg14trIW2a9-Nwk1oMp7ju_RYWGs,202
|
|
50
|
+
project_init/templates/base/dot_claude/rules/go.md,sha256=_32OHTZjcPUwsnrgSJala8J1r9ny_F3WOx-zGW9RF-c,205
|
|
51
|
+
project_init/templates/base/dot_claude/rules/hooks.md,sha256=zhV-oB859pexDRcEiTgreOsjT-AkpoXjgUzMDkFhoIA,1367
|
|
52
|
+
project_init/templates/base/dot_claude/rules/node.md,sha256=XBzc7cGiHY5uJ-wnVJz3P3dJPSQiOvapFlHYmWtcl1U,417
|
|
53
|
+
project_init/templates/base/dot_claude/rules/python.md,sha256=HgcSk154u25k9bzqa824mS4_bzGgj1yAwi2ay2fRCe8,901
|
|
54
|
+
project_init/templates/base/dot_claude/scripts/README.md,sha256=3kaBqOAGi7YzTJ4zjAi5o79edLfFyi_jO6yun00ISB4,1062
|
|
55
|
+
project_init/templates/base/dot_claude/scripts/create_issue.sh,sha256=mFFG5wHuf5UVi6o1m815Y2AXqn5mQGgdfEQS825OR6g,16615
|
|
56
|
+
project_init/templates/base/dot_claude/scripts/create_nojira_pr.sh,sha256=UJN94j7mNwWTS1ik9_wJ--8rqdGfBHA4YTV-QLx2g2o,159
|
|
57
|
+
project_init/templates/base/dot_claude/scripts/finish_pr.sh,sha256=syCr3QlABEcw7JTKfQIZQkMQqpUfLh-oirlQqRlJVo4,149
|
|
58
|
+
project_init/templates/base/dot_claude/scripts/install_hooks.sh,sha256=EUdCKzT8e4rCdIj8hGDQ-ErrBiZQ8ExKpF83nXUfJn0,1703
|
|
59
|
+
project_init/templates/base/dot_claude/scripts/monitor_pr.sh,sha256=ppNfJ7lhoI585FgU2vDMe3K3zaYOyT3F9k2PWTIPYo4,9877
|
|
60
|
+
project_init/templates/base/dot_claude/scripts/promote_review.sh,sha256=L5nQ_vW1F02KVjb6TXyvwav7zJLCyWMo8EnvaXJQAO8,150
|
|
61
|
+
project_init/templates/base/dot_claude/scripts/push_branch.sh,sha256=r-d81x7gViabHiPwfyfuY2ITO_mMgnVYUVgcB0kmEl4,241
|
|
62
|
+
project_init/templates/base/dot_claude/scripts/push_wiki.sh,sha256=H5eYWhfEM7HlWvsAJIaCHFtSQoKnQl5bbahthtZ6ExE,857
|
|
63
|
+
project_init/templates/base/dot_claude/scripts/setup_github.sh,sha256=uDizAJosfmhZFMknZ2YffRM_kntTtCHbfi3QIM2WZHU,7884
|
|
64
|
+
project_init/templates/base/dot_claude/scripts/start_issue.sh,sha256=5_HM901oIrobYWJcTyPnIKwn2R88iXwxDuvPbZ7aA88,3665
|
|
65
|
+
project_init/templates/base/dot_claude/skills/README.md,sha256=PcIqtxLcXHfpJZwE5Wyn-up5N9myWmdO7ozWlkQ8KHQ,528
|
|
66
|
+
project_init/templates/base/dot_claude/skills/plan/SKILL.md.tmpl,sha256=V2eZnMYpHe7b_W9LcX3fvRQUBrJ8cvO8gfWVzmC8PIo,1248
|
|
67
|
+
project_init/templates/base/dot_claude/vault/README.md,sha256=d4vYXPjK0x2PvWlVHs0OC4_N97rJhGnWT2hTYFDg31Q,850
|
|
68
|
+
project_init/templates/base/dot_claude/vault/decisions/README.md,sha256=qmpoLzhkechTy1I3NBiYKBkqGMGNCOacLS6szb_0pHE,307
|
|
69
|
+
project_init/templates/base/dot_claude/vault/design/README.md,sha256=5_mVAA1NU_a0xANw3TYbsknXlz-KTZg5P2njXvhVYh8,120
|
|
70
|
+
project_init/templates/base/dot_claude/vault/knowledge/README.md,sha256=fr8Gqy_Om8IQozYlFiIA6LRF7xcwkny1KapD--jtBu4,182
|
|
71
|
+
project_init/templates/base/dot_claude/vault/sessions/README.md,sha256=WWZ7U1c12_HYu_9f2y25vkossX9V-LzeFf2VqYq5MaY,182
|
|
72
|
+
project_init/templates/base/dot_devcontainer/devcontainer.json.tmpl,sha256=Ssg7fZcQ1vDa_4s0flqh56-WcjhnlAtjY2r4a67TcNc,498
|
|
73
|
+
project_init/templates/base/dot_devcontainer/post-create.sh.tmpl,sha256=6FkoRsUym8bvVPMManTjRwu92CTSh_DHAbswNNZES64,1309
|
|
74
|
+
project_init/templates/base/dot_github/CODEOWNERS.tmpl,sha256=ECpvW5lyFuzHXvgXh1Ub3izbBtigercOLcwZc9WmniQ,539
|
|
75
|
+
project_init/templates/base/dot_github/copilot-instructions.md.tmpl,sha256=9P8sRgJBhAEgvw93zA2I5tEkSTz6g4adOCIfpV39PpQ,1854
|
|
76
|
+
project_init/templates/base/dot_github/pull_request_template.md,sha256=7PNW7XYbv6NHAyoG3hM8djNSR9p-FAfWm8ocGIHsQGQ,428
|
|
77
|
+
project_init/templates/base/dot_github/ISSUE_TEMPLATE/bug.yml,sha256=pOmwRCmYk7IOr-v61Py-EOMJPqCyHrXWGUpuhLjjSx4,2357
|
|
78
|
+
project_init/templates/base/dot_github/ISSUE_TEMPLATE/chore.yml,sha256=_zjW5S4WBO0IY9hS_SM3B-9-QKcVGI5sez39ai9VREk,2049
|
|
79
|
+
project_init/templates/base/dot_github/ISSUE_TEMPLATE/config.yml,sha256=h_qvS6eX4RnfH98gvEpMaDf0PrAH2E5OfLmgKaQq2ec,189
|
|
80
|
+
project_init/templates/base/dot_github/ISSUE_TEMPLATE/docs.yml,sha256=jl-sM0bEM2oyR3pizjYlqjHo3jNAJyi48oH4ENKF-hU,2182
|
|
81
|
+
project_init/templates/base/dot_github/ISSUE_TEMPLATE/feature.yml,sha256=bTI-dhMW1oXYN3-htwAFss5C_b3X6aMSnQnpfIyRbIs,2192
|
|
82
|
+
project_init/templates/base/dot_github/ISSUE_TEMPLATE/test.yml,sha256=Udj2wu9gQ5snhT_xF_VvWt7Be6jMtIOuAvxN3uwYzPU,2352
|
|
83
|
+
project_init/templates/base/dot_github/hooks/commit-msg,sha256=kvunmEhrF2bjHuXY0cmXg0Qtowl8Gwdrg3mYhvoj0qc,1700
|
|
84
|
+
project_init/templates/base/dot_github/hooks/pre-commit,sha256=pKBbAAFlAsxNQ4uKn82pTsLp9sCNrcVLSzjepHoAPKs,677
|
|
85
|
+
project_init/templates/base/dot_github/hooks/pre-push,sha256=-4SNx8VMNNsH8LQe1ImfBd9F1xDLEQT8YUvrK7juvHY,1956
|
|
86
|
+
project_init/templates/base/dot_github/workflows/board-automation.yml,sha256=jpi6QPCt92tY1nDI7lV8UaGcrE90MpvDKpab6BIvWP8,8874
|
|
87
|
+
project_init/templates/base/dot_github/workflows/ci.yml.tmpl,sha256=mH1Ix9ppCQEUTDq2wDPWS7VH449TqArmpuWENvjbJ8c,6805
|
|
88
|
+
project_init/templates/base/dot_github/workflows/docs.yml.tmpl,sha256=rJX91SmypSaYY6cRGqRg2lIZQF1DH00_8RaHBqe-ZSc,2282
|
|
89
|
+
project_init/templates/base/dot_github/workflows/issue-validation.yml,sha256=8sLXumBSB1cr_X1BHkMby0PfGo2jbh-l8t4PdQjbi38,2532
|
|
90
|
+
project_init/templates/base/dot_github/workflows/review-status.yml,sha256=Gnhq0QyuTPzavX9oKaAHVd-dKfLR8scC0-6S8yUt8WM,1811
|
|
91
|
+
project_init/templates/base/dot_github/workflows/validate-pr.yml,sha256=Xu_2vY7e8uNlmAYqdKVxaCdpc8-HKSw8ApFGDCKLtgw,4489
|
|
92
|
+
project_init/templates/base/dot_vscode/extensions.json.tmpl,sha256=0pZBfIu0Nyxiebx2kuWBmdgSMU-agkBEH46fTofUJB4,290
|
|
93
|
+
project_init/templates/base/dot_vscode/settings.json.tmpl,sha256=3asegrck_yIrgl89ZMtujIhLO_M10gwlLEr8EkUHZZw,211
|
|
94
|
+
project_init/templates/codex/dot_agents/skills/add_adr/SKILL.md,sha256=dFpXUaRjrlGd7-rY4_aKQepIbha7t9Jk76Tc7ik2L7Q,1581
|
|
95
|
+
project_init/templates/codex/dot_agents/skills/add_command/SKILL.md,sha256=CSFwA4lI1fL9pK1FcF6f7_0I6Tj1Pnn6oWiVC8vTp4U,2423
|
|
96
|
+
project_init/templates/codex/dot_agents/skills/add_hook/SKILL.md,sha256=bTi8YkGsZsx88vRGbVCPtuAcLVGrG4hempu_H4qkjFU,3369
|
|
97
|
+
project_init/templates/codex/dot_agents/skills/audit/SKILL.md,sha256=v3tENtJII8H4wZt1wTzA9izjBr6RPy7MQQ8tqEFP6Aw,5558
|
|
98
|
+
project_init/templates/codex/dot_agents/skills/create_issue/SKILL.md,sha256=W3InMsmCs4hx8kNi-1BLwGEdlPyWcCJYkydguwjV7zU,2084
|
|
99
|
+
project_init/templates/codex/dot_agents/skills/github_workflow/SKILL.md,sha256=jFFLQDXwXilRAyIv-E7dQAMcWXvpKHLce1GUfkjq87A,3337
|
|
100
|
+
project_init/templates/codex/dot_agents/skills/request_review/SKILL.md,sha256=RX2wFGYJ6IB1a5sur-HKSQaFZ4X6IiRDnLUAEGT4aE0,632
|
|
101
|
+
project_init/templates/codex/dot_agents/skills/review/SKILL.md,sha256=33rjM1K6peYfJb9SrNT7aN92yr7whBqZRx6k9m7mZUg,715
|
|
102
|
+
project_init/templates/codex/dot_agents/skills/save_memory/SKILL.md,sha256=8i7X8BcKzG2jR77mtndfowE1aCsIxfoTB3dWGuXyhFU,786
|
|
103
|
+
project_init/templates/codex/dot_agents/skills/session_summary/SKILL.md,sha256=cdDYocn9zDd3NKNSF1RWHk4BYp-Uub8clAJRKH24Ls0,1240
|
|
104
|
+
project_init/templates/codex/dot_agents/skills/start_task/SKILL.md,sha256=pE74LgR9kQVWL9ctS-BFk-zeHi5piBtuINZIjNRJRsk,2758
|
|
105
|
+
project_init/templates/codex/dot_agents/skills/status/SKILL.md,sha256=lJgDgk2XR4YgOEeBg4xmzeA3Xe3fPMEdLXXHbhnb4iA,685
|
|
106
|
+
project_init/templates/codex/dot_codex/hooks.json.tmpl,sha256=LxJcxXeMVJgkwpXTOO9_b2CY1iS0ie8YiEjUALKTyjI,303
|
|
107
|
+
project_init/templates/fallback/dot_claude/hooks/github_command_guard.sh,sha256=BXZUJEZN3WHF0AH5PhiiXPt5L5UA7Spug3jjAx4eqww,425
|
|
108
|
+
project_init/templates/fallback/dot_claude/hooks/post_edit_lint.sh,sha256=Bjpbnx7EZPeth8eZoA8wJjEqBk6nuwvfKdf5Nd7ae9g,1989
|
|
109
|
+
project_init/templates/fallback/dot_claude/hooks/pre_commit_gate.sh,sha256=pBmz0vPsY5NiIDa-POMkiPhq-vWdeaXZuWN0aCRcc6A,3287
|
|
110
|
+
project_init/templates/fallback/dot_claude/hooks/prod_guard.py,sha256=asj0aoiyccGRpPLgQPVpWjSGp3fWzn958WVnA4C7FcA,5935
|
|
111
|
+
project_init/templates/fallback/dot_claude/hooks/session_setup.sh,sha256=QrCRxXf5tLV6jhHhRxHzvAIC6sGRxCK4i3yaK051o-4,2077
|
|
112
|
+
project_init/templates/fallback/dot_claude/hooks/workflow_state_reminder.sh,sha256=oCDqFQbETgbf8kysGqRZkUvAbSFXL6MWxjUVo03uKYE,2631
|
|
113
|
+
project_init/templates/fallback/dot_claude/skills/INDEX.md,sha256=DqOUPhK3gPWhJmihZNgKkF41bE9UVUktmd96b5BWxYc,1454
|
|
114
|
+
project_init/templates/fallback/dot_claude/skills/add_adr/SKILL.md,sha256=dFpXUaRjrlGd7-rY4_aKQepIbha7t9Jk76Tc7ik2L7Q,1581
|
|
115
|
+
project_init/templates/fallback/dot_claude/skills/add_command/SKILL.md,sha256=CSFwA4lI1fL9pK1FcF6f7_0I6Tj1Pnn6oWiVC8vTp4U,2423
|
|
116
|
+
project_init/templates/fallback/dot_claude/skills/add_hook/SKILL.md,sha256=bTi8YkGsZsx88vRGbVCPtuAcLVGrG4hempu_H4qkjFU,3369
|
|
117
|
+
project_init/templates/fallback/dot_claude/skills/audit/SKILL.md,sha256=v3tENtJII8H4wZt1wTzA9izjBr6RPy7MQQ8tqEFP6Aw,5558
|
|
118
|
+
project_init/templates/fallback/dot_claude/skills/create_issue/SKILL.md,sha256=W3InMsmCs4hx8kNi-1BLwGEdlPyWcCJYkydguwjV7zU,2084
|
|
119
|
+
project_init/templates/fallback/dot_claude/skills/github_workflow/SKILL.md,sha256=jFFLQDXwXilRAyIv-E7dQAMcWXvpKHLce1GUfkjq87A,3337
|
|
120
|
+
project_init/templates/fallback/dot_claude/skills/request_review/SKILL.md,sha256=RX2wFGYJ6IB1a5sur-HKSQaFZ4X6IiRDnLUAEGT4aE0,632
|
|
121
|
+
project_init/templates/fallback/dot_claude/skills/review/SKILL.md,sha256=33rjM1K6peYfJb9SrNT7aN92yr7whBqZRx6k9m7mZUg,715
|
|
122
|
+
project_init/templates/fallback/dot_claude/skills/save_memory/SKILL.md,sha256=8i7X8BcKzG2jR77mtndfowE1aCsIxfoTB3dWGuXyhFU,786
|
|
123
|
+
project_init/templates/fallback/dot_claude/skills/session_summary/SKILL.md,sha256=cdDYocn9zDd3NKNSF1RWHk4BYp-Uub8clAJRKH24Ls0,1240
|
|
124
|
+
project_init/templates/fallback/dot_claude/skills/start_task/SKILL.md,sha256=pE74LgR9kQVWL9ctS-BFk-zeHi5piBtuINZIjNRJRsk,2758
|
|
125
|
+
project_init/templates/fallback/dot_claude/skills/status/SKILL.md,sha256=lJgDgk2XR4YgOEeBg4xmzeA3Xe3fPMEdLXXHbhnb4iA,685
|
|
126
|
+
project_init/templates/gemini/dot_agents/skills/add_adr/SKILL.md,sha256=dFpXUaRjrlGd7-rY4_aKQepIbha7t9Jk76Tc7ik2L7Q,1581
|
|
127
|
+
project_init/templates/gemini/dot_agents/skills/add_command/SKILL.md,sha256=CSFwA4lI1fL9pK1FcF6f7_0I6Tj1Pnn6oWiVC8vTp4U,2423
|
|
128
|
+
project_init/templates/gemini/dot_agents/skills/add_hook/SKILL.md,sha256=bTi8YkGsZsx88vRGbVCPtuAcLVGrG4hempu_H4qkjFU,3369
|
|
129
|
+
project_init/templates/gemini/dot_agents/skills/audit/SKILL.md,sha256=v3tENtJII8H4wZt1wTzA9izjBr6RPy7MQQ8tqEFP6Aw,5558
|
|
130
|
+
project_init/templates/gemini/dot_agents/skills/create_issue/SKILL.md,sha256=W3InMsmCs4hx8kNi-1BLwGEdlPyWcCJYkydguwjV7zU,2084
|
|
131
|
+
project_init/templates/gemini/dot_agents/skills/github_workflow/SKILL.md,sha256=jFFLQDXwXilRAyIv-E7dQAMcWXvpKHLce1GUfkjq87A,3337
|
|
132
|
+
project_init/templates/gemini/dot_agents/skills/request_review/SKILL.md,sha256=RX2wFGYJ6IB1a5sur-HKSQaFZ4X6IiRDnLUAEGT4aE0,632
|
|
133
|
+
project_init/templates/gemini/dot_agents/skills/review/SKILL.md,sha256=33rjM1K6peYfJb9SrNT7aN92yr7whBqZRx6k9m7mZUg,715
|
|
134
|
+
project_init/templates/gemini/dot_agents/skills/save_memory/SKILL.md,sha256=8i7X8BcKzG2jR77mtndfowE1aCsIxfoTB3dWGuXyhFU,786
|
|
135
|
+
project_init/templates/gemini/dot_agents/skills/session_summary/SKILL.md,sha256=cdDYocn9zDd3NKNSF1RWHk4BYp-Uub8clAJRKH24Ls0,1240
|
|
136
|
+
project_init/templates/gemini/dot_agents/skills/start_task/SKILL.md,sha256=pE74LgR9kQVWL9ctS-BFk-zeHi5piBtuINZIjNRJRsk,2758
|
|
137
|
+
project_init/templates/gemini/dot_agents/skills/status/SKILL.md,sha256=lJgDgk2XR4YgOEeBg4xmzeA3Xe3fPMEdLXXHbhnb4iA,685
|
|
138
|
+
project_init/templates/gemini/dot_claude/scripts/setup_gemini.sh.tmpl,sha256=7IjgJ2qN_693-YncrCYnL9hJD86xf0abG3_ZiWk56Co,592
|
|
139
|
+
project_init/templates/gemini/dot_gemini-extension/gemini-extension.json.tmpl,sha256=LxTbxBfBWumRQJ6ly1QVFaOiLdW7PQpWA8uqNc3oYZk,286
|
|
140
|
+
project_init/templates/gemini/dot_gemini-extension/commands/add_adr.toml,sha256=SXR9-keB1pK6Ifo71N3e3lwArjccx6-asQ_Y4Oza7Ss,304
|
|
141
|
+
project_init/templates/gemini/dot_gemini-extension/commands/add_command.toml,sha256=mmypcxgM3xmeI_cRoU0Ed721wi4RyTcolvEdct9Z720,315
|
|
142
|
+
project_init/templates/gemini/dot_gemini-extension/commands/add_hook.toml,sha256=VnoCWOgsZEcMKYcqkkA7dzAhwhmBYa7sqvb9L1fGb1w,318
|
|
143
|
+
project_init/templates/gemini/dot_gemini-extension/commands/audit.toml,sha256=K1PhruzaWQtUHbNypFjhWX-j9yKswbUspAM7e-qQ3vQ,368
|
|
144
|
+
project_init/templates/gemini/dot_gemini-extension/commands/create_issue.toml,sha256=7LN_iLILkXLEVsemReVaEiDwiLPjodEM2J6z81s1j88,316
|
|
145
|
+
project_init/templates/gemini/dot_gemini-extension/commands/github_workflow.toml,sha256=k0U_6xefzLinJxCdCB2hhgMEp_KgZfdGwlGEpByyva4,334
|
|
146
|
+
project_init/templates/gemini/dot_gemini-extension/commands/request_review.toml,sha256=errCsow1HX3qGf2aFrTg6XN79GEqe8U86FrqWZ8LiSI,183
|
|
147
|
+
project_init/templates/gemini/dot_gemini-extension/commands/review.toml,sha256=j-6qyyKEh-kc3UEPIoGEaeC3ZTLo26J3mDJsUzFoBQQ,210
|
|
148
|
+
project_init/templates/gemini/dot_gemini-extension/commands/save_memory.toml,sha256=HKKgQmwpXZH6gAFwP7mikaDcqEp2XSe6KDvjCEVkTpc,187
|
|
149
|
+
project_init/templates/gemini/dot_gemini-extension/commands/session_summary.toml,sha256=mpslEi3tga8qKev-C0BNWCtemQU5IQcv05KM5ByLGmM,311
|
|
150
|
+
project_init/templates/gemini/dot_gemini-extension/commands/start_task.toml,sha256=weVdcJMqqyHPxrVDHD_ZhAtVIvVkwNMpmPrv-W26S48,301
|
|
151
|
+
project_init/templates/gemini/dot_gemini-extension/commands/status.toml,sha256=meErNZGB7dSY9SQvjN6nTXAMdnDeI1KLn-Dw35O-fjY,214
|
|
152
|
+
project_init/templates/gemini/dot_gemini-extension/hooks/hooks.json.tmpl,sha256=GfTj2D9138SRnYNZ20WnohCcelC7vBuhIMJVZB9eZyI,366
|
|
153
|
+
project_init/templates/graphify/dot_claude/docs/guides/using-graphify.md,sha256=BSpF_ZY3crU52FQrhwl7egd2UJg0nZNuorO0zBuoHNI,1562
|
|
154
|
+
project_init/templates/graphify/dot_claude/rules/graphify.md,sha256=R9mmtnYIU21w4sYOZffTsOmieNE6V7gJZjXd_wMe9lM,762
|
|
155
|
+
project_init/templates/graphify/dot_claude/scripts/setup_graphify.sh,sha256=9aiLe5k6NrdC9Z1-yvXu38Ix-qkFcEGlDIGl7rNYO5M,1370
|
|
156
|
+
project_init/templates/obsidian/dot_claude/scripts/lint_memory.sh,sha256=kyIgNQXN3Gwyc2vM8aiRTLJSuECN8JpLkKm0ufaEQSE,3324
|
|
157
|
+
project_init/templates/obsidian/dot_claude/vault/log.md,sha256=KtIs6uwtamyzuDZMorhJ72hoj-nXrXDf7CPJpLkip-I,166
|
|
158
|
+
project_init/templates/obsidian/dot_claude/vault/decisions/adr-000-project-setup.md.tmpl,sha256=lUgmfejFD3hcrrkU7usBRZt_e-PYMgsUOCe7D9lFoP4,539
|
|
159
|
+
project_init/templates/obsidian/dot_claude/vault/dot_obsidian/README.md,sha256=pbD37QddfDVvX6zXd2xWQ1wfpz29VUQX5ZmTB380TeM,1369
|
|
160
|
+
project_init/templates/obsidian/dot_claude/vault/dot_obsidian/app.json,sha256=GbMmgXnjctlt0RL4B7PKWVlagyYxE0i_nKlzShUOlyQ,135
|
|
161
|
+
project_init/templates/obsidian/dot_claude/vault/dot_obsidian/community-plugins.json,sha256=Pm4HVrM_CHlktmWLGipxPvORHSuFto9MhLHYU85_K_M,54
|
|
162
|
+
project_init/templates/obsidian/dot_claude/vault/dot_obsidian/core-plugins.json,sha256=2gW3lqPBKYfA30fs8XAHl-0iSjeeuqdOdPhigLQxrcI,73
|
|
163
|
+
project_init/templates/obsidian/dot_claude/vault/templates/decision.md,sha256=Aq2qiWORhXIBurFsejDpLLqOMaVcUErytXXXzZD3zNw,187
|
|
164
|
+
project_init/templates/obsidian/dot_claude/vault/templates/design-note.md,sha256=5MPiDVfQuf9QQoOjWRVCvrx1K1wxYcu8RRXpc_PkoDc,159
|
|
165
|
+
project_init/templates/obsidian/dot_claude/vault/templates/knowledge-note.md,sha256=9T2uaeToUjcQ95V7SnumgCyGta4-JNtmQm5q7iddDeI,117
|
|
166
|
+
project_init/templates/obsidian/dot_claude/vault/templates/session-note.md,sha256=0qe-gd9_y14IQkar8AZZO5DNFQZPX_9EaUIiST_g2Fs,152
|
|
167
|
+
project_init/templates/presets/obsidian-graphify.toml,sha256=spzof9ciP4ZABKzS791IEC5sdZEhm3O0CLezDh-lGrA,538
|
|
168
|
+
project_init/templates/presets/obsidian-only.toml,sha256=q6IYA3SuS5fCOS9b5mmp8yRfmtH2qRK1jzIyMKkneCE,342
|
|
169
|
+
project_init-0.3.0.dist-info/METADATA,sha256=gw-TS4GqyrNexRMKd9CG16yr9dZMROiTuzY20_GKAao,18105
|
|
170
|
+
project_init-0.3.0.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
|
|
171
|
+
project_init-0.3.0.dist-info/entry_points.txt,sha256=2Sm4GKbH0dRJfI72mp6FDyj81B5TOhaH7440v5BcXUE,60
|
|
172
|
+
project_init-0.3.0.dist-info/licenses/LICENSE,sha256=aDPtCSItRxijBNaazoqUdhA-zf4caMcZR0aqMngiXqk,11340
|
|
173
|
+
project_init-0.3.0.dist-info/RECORD,,
|