nexus-dev-toolkit 3.1.0__tar.gz → 3.1.1__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 (39) hide show
  1. {nexus_dev_toolkit-3.1.0/nexus_dev_toolkit.egg-info → nexus_dev_toolkit-3.1.1}/PKG-INFO +1 -1
  2. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/nexus_cli.py +91 -2
  3. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1/nexus_dev_toolkit.egg-info}/PKG-INFO +1 -1
  4. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/pyproject.toml +1 -1
  5. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/LICENSE +0 -0
  6. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/README.md +0 -0
  7. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/nexus_dev_toolkit.egg-info/SOURCES.txt +0 -0
  8. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/nexus_dev_toolkit.egg-info/dependency_links.txt +0 -0
  9. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/nexus_dev_toolkit.egg-info/entry_points.txt +0 -0
  10. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/nexus_dev_toolkit.egg-info/requires.txt +0 -0
  11. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/nexus_dev_toolkit.egg-info/top_level.txt +0 -0
  12. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/nexus_server.py +0 -0
  13. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/setup.cfg +0 -0
  14. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tests/test_cli.py +0 -0
  15. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tests/test_server.py +0 -0
  16. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/__init__.py +0 -0
  17. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/agents/__init__.py +0 -0
  18. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/agents/code-reviewer.md +0 -0
  19. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/agents/database-reviewer.md +0 -0
  20. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/agents/deployment-reviewer.md +0 -0
  21. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/agents/monitoring-reviewer.md +0 -0
  22. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/agents/performance-reviewer.md +0 -0
  23. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/epav/__init__.py +0 -0
  24. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/epav/arch_ingest.py +0 -0
  25. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/epav/package_resolver.py +0 -0
  26. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/epav/project_rules.py +0 -0
  27. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/epav/skills/__init__.py +0 -0
  28. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/epav/skills/apply.md +0 -0
  29. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/epav/skills/code-review.md +0 -0
  30. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/epav/skills/database-review.md +0 -0
  31. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/epav/skills/deployment-review.md +0 -0
  32. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/epav/skills/epav.md +0 -0
  33. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/epav/skills/evaluate.md +0 -0
  34. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/epav/skills/monitoring-review.md +0 -0
  35. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/epav/skills/performance-review.md +0 -0
  36. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/epav/skills/plan.md +0 -0
  37. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/epav/skills/scaffold.md +0 -0
  38. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/epav/skills/validate.md +0 -0
  39. {nexus_dev_toolkit-3.1.0 → nexus_dev_toolkit-3.1.1}/tools/epav/task_loader.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nexus-dev-toolkit
3
- Version: 3.1.0
3
+ Version: 3.1.1
4
4
  Summary: Developer workflow toolkit for Claude Code — Day 0 scaffold + Day 1 EPAV
5
5
  Author-email: Ronald dela Cruz <rcdelacruz@users.noreply.github.com>
6
6
  License-Expression: MIT
@@ -11,12 +11,14 @@ from rich.table import Table
11
11
  app = typer.Typer(name="nexus", no_args_is_help=False, help="nexus-dev-toolkit — Day 0 scaffold + Day 1 EPAV workflow for Claude Code")
12
12
  skill_app = typer.Typer(name="skill", no_args_is_help=True, help="Manage skills in .claude/commands/")
13
13
  rule_app = typer.Typer(name="rule", no_args_is_help=True, help="Manage rules in knowledge/rules/")
14
+ agent_app = typer.Typer(name="agent", no_args_is_help=True, help="Manage subagents in .claude/agents/")
14
15
  app.add_typer(skill_app, name="skill")
15
16
  app.add_typer(rule_app, name="rule")
17
+ app.add_typer(agent_app, name="agent")
16
18
 
17
19
  console = Console()
18
20
 
19
- _VERSION = "3.1.0"
21
+ _VERSION = "3.1.1"
20
22
 
21
23
  _LOGO = """\
22
24
  [cyan]███╗ ██╗███████╗██╗ ██╗██╗ ██╗███████╗[/cyan]
@@ -35,8 +37,17 @@ def _print_logo() -> None:
35
37
  console.print()
36
38
 
37
39
 
40
+ def _version_callback(value: bool) -> None:
41
+ if value:
42
+ console.print(f"nexus-dev-toolkit v{_VERSION}")
43
+ raise typer.Exit()
44
+
45
+
38
46
  @app.callback(invoke_without_command=True)
39
- def _callback(ctx: typer.Context) -> None:
47
+ def _callback(
48
+ ctx: typer.Context,
49
+ version: bool = typer.Option(None, "--version", "-V", callback=_version_callback, is_eager=True, help="Show version and exit."),
50
+ ) -> None:
40
51
  if ctx.invoked_subcommand is None:
41
52
  _print_logo()
42
53
  console.print(ctx.get_help())
@@ -337,6 +348,84 @@ def rule_list(
337
348
  console.print(table)
338
349
 
339
350
 
351
+ # ── agent subcommands ─────────────────────────────────────────────────────────
352
+
353
+ _AGENT_TEMPLATE = """\
354
+ ---
355
+ name: {name}
356
+ description: Describe when Claude should spawn this agent (role, not action — e.g. "reviews X for Y")
357
+ ---
358
+
359
+ # {name}
360
+
361
+ ## Role
362
+
363
+ Describe what this agent does.
364
+
365
+ ## Steps
366
+
367
+ ### 1 — Discover context
368
+
369
+ Read CLAUDE.md, project manifest, and relevant source files.
370
+
371
+ ### 2 — Perform task
372
+
373
+ What the agent should do.
374
+
375
+ ### 3 — Output
376
+
377
+ What the agent should return when done.
378
+ """
379
+
380
+
381
+ @agent_app.command("add")
382
+ def agent_add(
383
+ name: str = typer.Argument(..., help="Agent name (e.g. 'security-reviewer')"),
384
+ project_dir: str = typer.Option(".", "--dir", "-d"),
385
+ ) -> None:
386
+ """Create a new subagent in .claude/agents/."""
387
+ root = Path(project_dir).resolve()
388
+ dest = root / ".claude" / "agents" / f"{name}.md"
389
+ dest.parent.mkdir(parents=True, exist_ok=True)
390
+
391
+ if dest.exists():
392
+ console.print(f" [yellow]·[/yellow] .claude/agents/{name}.md already exists")
393
+ return
394
+
395
+ dest.write_text(_AGENT_TEMPLATE.format(name=name), encoding="utf-8")
396
+ console.print(f" [green]✓[/green] Created .claude/agents/{name}.md")
397
+ console.print(f" [dim]Edit the description so Claude knows when to spawn it.[/dim]")
398
+
399
+
400
+ @agent_app.command("list")
401
+ def agent_list(
402
+ project_dir: str = typer.Option(".", "--dir", "-d"),
403
+ ) -> None:
404
+ """List all subagents in .claude/agents/."""
405
+ root = Path(project_dir).resolve()
406
+ agents_dir = root / ".claude" / "agents"
407
+
408
+ if not agents_dir.exists():
409
+ console.print(" [yellow]·[/yellow] No .claude/agents/ found. Run [cyan]nexus init[/cyan] first.")
410
+ return
411
+
412
+ agents = sorted(agents_dir.glob("*.md"))
413
+ if not agents:
414
+ console.print(" [yellow]·[/yellow] No agents yet. Run [cyan]nexus agent add <name>[/cyan]")
415
+ return
416
+
417
+ table = Table(show_header=True, header_style="dim")
418
+ table.add_column("Agent", style="cyan")
419
+ table.add_column("Source")
420
+
421
+ builtins = set(_BUILTIN_AGENTS)
422
+ for a in agents:
423
+ source = "built-in" if a.name in builtins else "custom"
424
+ table.add_row(a.stem, source)
425
+
426
+ console.print(table)
427
+
428
+
340
429
  def main() -> None:
341
430
  app()
342
431
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nexus-dev-toolkit
3
- Version: 3.1.0
3
+ Version: 3.1.1
4
4
  Summary: Developer workflow toolkit for Claude Code — Day 0 scaffold + Day 1 EPAV
5
5
  Author-email: Ronald dela Cruz <rcdelacruz@users.noreply.github.com>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "nexus-dev-toolkit"
3
- version = "3.1.0"
3
+ version = "3.1.1"
4
4
  description = "Developer workflow toolkit for Claude Code — Day 0 scaffold + Day 1 EPAV"
5
5
  authors = [
6
6
  {name = "Ronald dela Cruz", email = "rcdelacruz@users.noreply.github.com"}