@wavyx/pdcli 0.4.0 → 0.6.0
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.
- package/CHANGELOG.md +32 -0
- package/README.md +11 -0
- package/bin/dev.js +19 -0
- package/oclif.manifest.json +503 -35
- package/package.json +1 -1
- package/src/commands/audit.js +137 -0
- package/src/commands/funnel.js +92 -0
- package/src/commands/metrics/velocity.js +81 -0
- package/src/commands/pipeline/health.js +78 -0
- package/src/lib/analytics.js +154 -0
- package/src/lib/audit.js +228 -0
- package/src/lib/period.js +33 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,38 @@ All notable changes to `pdcli` are documented here. Format follows
|
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/); versions follow
|
|
5
5
|
[SemVer](https://semver.org/).
|
|
6
6
|
|
|
7
|
+
## [0.6.0] - 2026-06-04
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- Documentation site (Astro + Starlight) at wavyx.github.io/pdcli:
|
|
12
|
+
quickstarts (including a dedicated AI-agent quickstart), guides for every
|
|
13
|
+
feature area, automation recipes, concepts, and a command reference
|
|
14
|
+
generated from the CLI manifest.
|
|
15
|
+
- Machine-readable docs for AI agents: `llms.txt`, `llms-full.txt`, and
|
|
16
|
+
`llms-small.txt`.
|
|
17
|
+
- Native tarballs (linux x64/arm64, macOS x64/arm64, Windows x64) attached
|
|
18
|
+
to every GitHub Release for non-npm installs.
|
|
19
|
+
- Shell completion docs (`pdcli autocomplete bash|zsh|fish`).
|
|
20
|
+
- `bin/dev.js` development runner (no manifest cache).
|
|
21
|
+
|
|
22
|
+
## [0.5.0] - 2026-06-04
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- `metrics velocity` — the Sales Velocity Equation ((open × win rate ×
|
|
27
|
+
avg won value) / cycle days) with all four levers, over a trailing
|
|
28
|
+
`--period` and optional `--pipeline`/`--owner` scope.
|
|
29
|
+
- `funnel` — stage-to-stage conversion approximated from closed deals'
|
|
30
|
+
final stages, plus the current open distribution per stage.
|
|
31
|
+
- `pipeline health` — per-stage snapshot: open count/value,
|
|
32
|
+
probability-weighted value, stale deals (>14d), deals without a next
|
|
33
|
+
step, deals past their close date.
|
|
34
|
+
- `audit` — 11 data-hygiene checks (stale/ancient deals, missing fields,
|
|
35
|
+
duplicate persons by email, duplicate orgs by name, uncontactable
|
|
36
|
+
contacts, overdue pileups, …) with `--checks`, `--verbose`, and
|
|
37
|
+
`--strict` (exit 1 on must-severity findings — CI-able).
|
|
38
|
+
|
|
7
39
|
## [0.4.0] - 2026-06-04
|
|
8
40
|
|
|
9
41
|
### Added
|
package/README.md
CHANGED
|
@@ -69,6 +69,16 @@ pdcli person import people.csv --dry-run # CSV headers map to fiel
|
|
|
69
69
|
pdcli person import people.csv # custom fields by name
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
+
## Analytics & housekeeping
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
pdcli metrics velocity --period 90d # the Sales Velocity Equation, in your terminal
|
|
76
|
+
pdcli funnel --pipeline 1 # stage-to-stage conversion
|
|
77
|
+
pdcli pipeline health # per-stage value, weighted value, stale, no-next-step
|
|
78
|
+
pdcli audit # 11 data-hygiene checks (duplicates, stale, gaps)
|
|
79
|
+
pdcli audit --strict # exit 1 on must-severity findings — wire into CI
|
|
80
|
+
```
|
|
81
|
+
|
|
72
82
|
## Files, webhooks, backup
|
|
73
83
|
|
|
74
84
|
```bash
|
|
@@ -88,6 +98,7 @@ pdcli doctor # diagnose auth/keychain/connectivity
|
|
|
88
98
|
|
|
89
99
|
- `--output table|json|yaml|csv` everywhere; table in a TTY, JSON when piped.
|
|
90
100
|
- Deterministic [sysexits](https://man.freebsd.org/cgi/man.cgi?query=sysexits) exit codes for scripting.
|
|
101
|
+
- **Docs: [wavyx.github.io/pdcli](https://wavyx.github.io/pdcli)** — guides, cookbook, AI-agent quickstart, [`llms.txt`](https://wavyx.github.io/pdcli/llms.txt).
|
|
91
102
|
- Full reference: [docs/commands.md](docs/commands.md) (generated from the CLI manifest).
|
|
92
103
|
|
|
93
104
|
## License
|
package/bin/dev.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { existsSync, readFileSync } from 'node:fs'
|
|
3
|
+
import { resolve } from 'node:path'
|
|
4
|
+
import { execute } from '@oclif/core'
|
|
5
|
+
|
|
6
|
+
const envFile = resolve(process.cwd(), '.env')
|
|
7
|
+
if (existsSync(envFile)) {
|
|
8
|
+
for (const line of readFileSync(envFile, 'utf8').split('\n')) {
|
|
9
|
+
const trimmed = line.trim()
|
|
10
|
+
if (!trimmed || trimmed.startsWith('#')) continue
|
|
11
|
+
const eq = trimmed.indexOf('=')
|
|
12
|
+
if (eq === -1) continue
|
|
13
|
+
const key = trimmed.slice(0, eq).trim()
|
|
14
|
+
const value = trimmed.slice(eq + 1).trim()
|
|
15
|
+
if (!process.env[key]) process.env[key] = value
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
await execute({ dir: import.meta.url })
|