replen 1.3.0 → 1.3.1

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.
@@ -20,6 +20,7 @@ const BUNDLED_SKILLS_ROOT = join(SELF_DIR, "..", "extras", "skills");
20
20
  // follow the MCP tool's description instead. The CLAUDE.md instruction
21
21
  // shipped by `replen project-init` is the cross-host fallback.
22
22
  const CLAUDE_SKILLS_ROOT = join(homedir(), ".claude", "skills");
23
+ const CLAUDE_COMMANDS_ROOT = join(homedir(), ".claude", "commands");
23
24
  const SKILLS = [
24
25
  {
25
26
  name: "replen",
@@ -54,6 +55,18 @@ export function installSkills() {
54
55
  catch { /* best effort */ }
55
56
  }
56
57
  }
58
+ // Migrate: an early Replen shipped a `/replen` slash COMMAND (~/.claude/commands/
59
+ // replen.md) that invokes the now-removed `replen-match` skill. Left in place it
60
+ // renders a DUPLICATE `/replen` next to the skill. Remove only OUR stale command —
61
+ // gated on it referencing `replen-match`, so a user's own `/replen` command (or any
62
+ // other) is never touched.
63
+ try {
64
+ const legacyCmd = join(CLAUDE_COMMANDS_ROOT, "replen.md");
65
+ if (existsSync(legacyCmd) && readFileSync(legacyCmd, "utf8").includes("replen-match")) {
66
+ rmSync(legacyCmd, { force: true });
67
+ }
68
+ }
69
+ catch { /* best effort */ }
57
70
  let installed = 0;
58
71
  for (const skill of SKILLS) {
59
72
  for (const rel of skill.files) {
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: replen
3
- description: Review Replen's suggestions for the current repo against your code. Replen surfaces libraries, dependency releases, and security advisories relevant to what you're building; this reads the codebase, gives each one a clear verdict and effort estimate with the specific files it affects, and records what you decide. Invoke with `/replen` or by saying "what's new from Replen?".
3
+ description: Triage today's Replen matches for this repo a verdict and effort estimate per candidate, grounded in your code. Invoke with `/replen` or "what's new from Replen?".
4
4
  ---
5
5
 
6
6
  # Replen Match — in-session candidate triage
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: replen-onboard
3
- description: One-time background setup for Replen. Works through the user's active repos reading each one's code, tidying thin/missing docs (never touching good ones), and building a tailored, grounded profile (a project report + capabilities) so Replen surfaces genuinely useful tools instead of generic ones. Runs autonomously in the background. Invoke with `/replen-onboard`, or when the user first sets up Replen and wants it configured properly across their projects.
3
+ description: One-time Replen setup profiles your active repos so matches are relevant, not generic. Runs autonomously in the background. Invoke with `/replen-onboard`.
4
4
  ---
5
5
 
6
6
  # Replen onboarding — autonomous, background, multi-repo setup
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replen",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "description": "Make your AI coding tools smarter. One command, no API keys, free. Replen watches what your projects actually do and surfaces a few things worth bringing in each month. Use one as is, port a piece of another, cherry pick an idea, or build it clean room. The match happens inside your AI tool's session. A few actionable matches a month, by design.",
5
5
  "type": "module",
6
6
  "bin": {