ai-forge-cli 3.0.1__tar.gz → 3.0.2__tar.gz

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.
Files changed (43) hide show
  1. {ai_forge_cli-3.0.1/src/ai_forge_cli.egg-info → ai_forge_cli-3.0.2}/PKG-INFO +1 -1
  2. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/pyproject.toml +1 -1
  3. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2/src/ai_forge_cli.egg-info}/PKG-INFO +1 -1
  4. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/commands/init.py +53 -0
  5. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/tests/test_context.py +4 -0
  6. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/MANIFEST.in +0 -0
  7. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/README.md +0 -0
  8. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/setup.cfg +0 -0
  9. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/setup.py +0 -0
  10. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/ai_forge_cli.egg-info/SOURCES.txt +0 -0
  11. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/ai_forge_cli.egg-info/dependency_links.txt +0 -0
  12. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/ai_forge_cli.egg-info/entry_points.txt +0 -0
  13. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/ai_forge_cli.egg-info/requires.txt +0 -0
  14. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/ai_forge_cli.egg-info/top_level.txt +0 -0
  15. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/__init__.py +0 -0
  16. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/__main__.py +0 -0
  17. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/assets/audit_template.html +0 -0
  18. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/assets/forge_full_logo.drawio.svg +0 -0
  19. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/assets/forge_white_small.drawio.svg +0 -0
  20. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/commands/__init__.py +0 -0
  21. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/commands/audit.py +0 -0
  22. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/commands/base.py +0 -0
  23. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/commands/context.py +0 -0
  24. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/commands/crawl.py +0 -0
  25. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/common.py +0 -0
  26. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/crawler.py +0 -0
  27. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/forge.py +0 -0
  28. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/FRAMEWORK_V4.md +0 -0
  29. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/SCHEMA_REFERENCE_V4.md +0 -0
  30. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-build/SKILL.md +0 -0
  31. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-build/agents/openai.yaml +0 -0
  32. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-business/SKILL.md +0 -0
  33. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-business/agents/openai.yaml +0 -0
  34. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-hydrate/SKILL.md +0 -0
  35. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-hydrate/agents/openai.yaml +0 -0
  36. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-review/SKILL.md +0 -0
  37. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-review/agents/openai.yaml +0 -0
  38. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-schema/SKILL.md +0 -0
  39. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-schema/agents/openai.yaml +0 -0
  40. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-security/SKILL.md +0 -0
  41. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-security/agents/openai.yaml +0 -0
  42. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/yaml_io.py +0 -0
  43. {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/tests/test_crawler.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ai-forge-cli
3
- Version: 3.0.1
3
+ Version: 3.0.2
4
4
  Summary: Forge V4 architecture context CLI
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ai-forge-cli"
7
- version = "3.0.1"
7
+ version = "3.0.2"
8
8
  description = "Forge V4 architecture context CLI"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ai-forge-cli
3
- Version: 3.0.1
3
+ Version: 3.0.2
4
4
  Summary: Forge V4 architecture context CLI
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -164,6 +164,7 @@ def _scaffold_repository(target_root: Path, system_name: str, system_id: str) ->
164
164
  _copy_skills(forge_root)
165
165
  _rewrite_skill_references(forge_root)
166
166
  _create_surface_skills(target_root, forge_root)
167
+ _create_github_copilot_context(target_root)
167
168
 
168
169
 
169
170
  def _copy_docs(forge_root: Path) -> None:
@@ -260,6 +261,30 @@ def _create_surface_skill(surface_root: Path, forge_root: Path, skill_name: str)
260
261
  target_skill.symlink_to(_relative_symlink_target(surface_root, source_skill), target_is_directory=True)
261
262
 
262
263
 
264
+ def _create_github_copilot_context(target_root: Path) -> None:
265
+ github_root = target_root / ".github"
266
+ instructions_root = github_root / "instructions"
267
+ prompts_root = github_root / "prompts"
268
+ instructions_root.mkdir(parents=True, exist_ok=True)
269
+ prompts_root.mkdir(parents=True, exist_ok=True)
270
+ _write_text(github_root / "copilot-instructions.md", _copilot_instructions_doc())
271
+ _write_text(instructions_root / "forge.instructions.md", _copilot_path_instructions_doc())
272
+ for skill_name in SKILL_DIRS:
273
+ _create_symlink(
274
+ prompts_root / f"{skill_name}.prompt.md",
275
+ target_root / "forge" / "skills" / skill_name / "SKILL.md",
276
+ )
277
+
278
+
279
+ def _create_symlink(link_path: Path, destination: Path) -> None:
280
+ if link_path.exists() or link_path.is_symlink():
281
+ if link_path.is_symlink() or link_path.is_file():
282
+ link_path.unlink()
283
+ else:
284
+ shutil.rmtree(link_path)
285
+ link_path.symlink_to(_relative_symlink_target(link_path.parent, destination), target_is_directory=destination.is_dir())
286
+
287
+
263
288
  def _relative_symlink_target(link_parent: Path, destination: Path) -> Path:
264
289
  return Path(os.path.relpath(destination, start=link_parent))
265
290
 
@@ -290,6 +315,34 @@ def _scaffold_gitignore() -> str:
290
315
  )
291
316
 
292
317
 
318
+ def _copilot_instructions_doc() -> str:
319
+ return """# Forge Instructions
320
+
321
+ This repository uses Forge V4. Start with `forge/USING_FORGE.md`, then use the
322
+ skills in `forge/skills` in this order:
323
+
324
+ 1. `forge-business`
325
+ 2. `forge-schema`
326
+ 3. `forge-review`
327
+ 4. `forge-security`
328
+ 5. `forge-build`
329
+
330
+ Treat `forge/skills` as the canonical skill source. Agent-specific skill
331
+ surfaces are symlinked back to that directory.
332
+ """
333
+
334
+
335
+ def _copilot_path_instructions_doc() -> str:
336
+ return """---
337
+ applyTo: "**"
338
+ ---
339
+
340
+ Use the Forge V4 workflow for repository work. Read `forge/USING_FORGE.md`
341
+ before implementation, and prefer the relevant skill in `forge/skills` for the
342
+ current task.
343
+ """
344
+
345
+
293
346
  def _print_init_summary(target_root: Path, system_name: str, system_id: str) -> None:
294
347
  forge_root = target_root / "forge"
295
348
  print(_banner("FORGE INITIALIZED"))
@@ -130,6 +130,10 @@ def test_init_scaffolds_traversable_repo(tmp_path: Path, capsys) -> None:
130
130
  assert (root / ".claude" / "skills" / "forge-hydrate").is_symlink()
131
131
  assert (root / ".agents" / "skills" / "forge-review").is_symlink()
132
132
  assert (root / ".copilot" / "skills" / "forge-security").is_symlink()
133
+ assert (root / ".github" / "copilot-instructions.md").exists()
134
+ assert (root / ".github" / "instructions" / "forge.instructions.md").exists()
135
+ assert (root / ".github" / "prompts" / "forge-build.prompt.md").is_symlink()
136
+ assert (root / ".github" / "prompts" / "forge-build.prompt.md").resolve() == forge_root / "skills" / "forge-build" / "SKILL.md"
133
137
  rewritten_skill = (forge_root / "skills" / "forge-schema" / "SKILL.md").read_text(encoding="utf-8")
134
138
  assert "forge/SCHEMA_REFERENCE_V4.md" in rewritten_skill
135
139
  assert "forge/USING_FORGE.md" in rewritten_skill
File without changes
File without changes
File without changes
File without changes