@kolatts/pncli 1.10.0 → 1.11.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/copilot-instructions.md +34 -1
- package/dist/{chunk-O3LWAWSN.js → chunk-AWSXVWRN.js} +2 -1
- package/dist/{chunk-O3LWAWSN.js.map → chunk-AWSXVWRN.js.map} +1 -1
- package/dist/{chunk-3XHTRFRX.js → chunk-VPUWMP2M.js} +3 -2
- package/dist/chunk-VPUWMP2M.js.map +1 -0
- package/dist/cli.js +410 -36
- package/dist/cli.js.map +1 -1
- package/dist/{config-NCI2BTQG.js → config-OFLPO5DN.js} +4 -2
- package/dist/{http-L2P23H2D.js → http-LNDRNPP7.js} +2 -2
- package/package.json +1 -1
- package/skills/pncli/SKILL.md +92 -0
- package/skills/pncli/ado.md +33 -0
- package/skills/pncli/artifactory.md +35 -0
- package/skills/pncli/bitbucket.md +30 -0
- package/skills/pncli/checkmarx.md +31 -0
- package/skills/pncli/confluence.md +24 -0
- package/skills/pncli/contrast.md +39 -0
- package/skills/pncli/jenkins.md +29 -0
- package/skills/pncli/jira.md +35 -0
- package/skills/pncli/marketplace.md +41 -0
- package/skills/pncli/sde.md +29 -0
- package/skills/pncli/servicenow.md +33 -0
- package/skills/pncli/sonarqube.md +30 -0
- package/skills/pncli/sonatypeiq.md +39 -0
- package/skills/pncli/udeploy.md +48 -0
- package/dist/chunk-3XHTRFRX.js.map +0 -1
- package/skills/address-pr-feedback/SKILL.md +0 -87
- package/skills/code-review/SKILL.md +0 -82
- package/skills/local-setup/SKILL.md +0 -225
- package/skills/plan/SKILL.md +0 -120
- package/skills/security-review/SKILL.md +0 -108
- package/skills/ship/SKILL.md +0 -170
- /package/dist/{config-NCI2BTQG.js.map → config-OFLPO5DN.js.map} +0 -0
- /package/dist/{http-L2P23H2D.js.map → http-LNDRNPP7.js.map} +0 -0
|
@@ -2,19 +2,21 @@
|
|
|
2
2
|
import {
|
|
3
3
|
getGlobalConfigPath,
|
|
4
4
|
loadConfig,
|
|
5
|
+
loadJsonFile,
|
|
5
6
|
maskConfig,
|
|
6
7
|
setConfigValue,
|
|
7
8
|
setRepoConfigValue,
|
|
8
9
|
writeGlobalConfig,
|
|
9
10
|
writeRepoConfig
|
|
10
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-AWSXVWRN.js";
|
|
11
12
|
export {
|
|
12
13
|
getGlobalConfigPath,
|
|
13
14
|
loadConfig,
|
|
15
|
+
loadJsonFile,
|
|
14
16
|
maskConfig,
|
|
15
17
|
setConfigValue,
|
|
16
18
|
setRepoConfigValue,
|
|
17
19
|
writeGlobalConfig,
|
|
18
20
|
writeRepoConfig
|
|
19
21
|
};
|
|
20
|
-
//# sourceMappingURL=config-
|
|
22
|
+
//# sourceMappingURL=config-OFLPO5DN.js.map
|
package/package.json
CHANGED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pncli
|
|
3
|
+
description: Use when asked to set up pncli, configure a service, initialize a repo, or run pncli commands. Walks through identity, work item tracking, source control, and optional services. For any specific service, read the included <service>.md file.
|
|
4
|
+
compatibility: Designed for Claude Code. Requires pncli installed and accessible in PATH.
|
|
5
|
+
user-invocable: true
|
|
6
|
+
metadata:
|
|
7
|
+
category: setup
|
|
8
|
+
providers: both
|
|
9
|
+
services: config
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
pncli gives AI agents and humans unified CLI access to enterprise tools: Jira, Bitbucket, Confluence, SonarQube, SDElements, Azure DevOps, Jenkins, Artifactory, IBM UrbanCode Deploy, Checkmarx, ServiceNow, Contrast Security IAST, and Sonatype IQ Server.
|
|
13
|
+
|
|
14
|
+
## Two config levels
|
|
15
|
+
|
|
16
|
+
**Env vars** — ephemeral, per-session, override the config file. Set before running pncli:
|
|
17
|
+
```
|
|
18
|
+
export PNCLI_<SERVICE>_<KEY>=value
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**Config file** — persistent, stored in `~/.pncli/config.json`. Set with:
|
|
22
|
+
```
|
|
23
|
+
pncli config set <service>.<key> <value>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Repo-level defaults (project key, target branch) are stored in `.pncli.json` in the repo root:
|
|
27
|
+
```
|
|
28
|
+
pncli config set --repo defaults.<service>.<key> <value>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Available services
|
|
32
|
+
|
|
33
|
+
For detailed setup of any service, read the included file for that service.
|
|
34
|
+
|
|
35
|
+
| Service | File | Commands unlocked |
|
|
36
|
+
|---------|------|-------------------|
|
|
37
|
+
| Jira | `jira.md` | Issues, sprints, custom fields |
|
|
38
|
+
| Bitbucket | `bitbucket.md` | Repos, PRs, diffs |
|
|
39
|
+
| Azure DevOps | `ado.md` | Work items, repos, PRs, pipelines |
|
|
40
|
+
| Confluence | `confluence.md` | Pages, spaces |
|
|
41
|
+
| SonarQube | `sonarqube.md` | Code quality issues |
|
|
42
|
+
| SDElements | `sde.md` | Threat model tasks |
|
|
43
|
+
| Checkmarx | `checkmarx.md` | SAST findings |
|
|
44
|
+
| IBM UrbanCode Deploy | `udeploy.md` | Component versions, deployments |
|
|
45
|
+
| Jenkins | `jenkins.md` | Builds, job status |
|
|
46
|
+
| Artifactory | `artifactory.md` | Packages, repos |
|
|
47
|
+
| ServiceNow | `servicenow.md` | Change requests, incidents |
|
|
48
|
+
| Contrast IAST | `contrast.md` | Runtime vulnerability findings |
|
|
49
|
+
| Sonatype IQ | `sonatypeiq.md` | Dependency policy enforcement |
|
|
50
|
+
| Skills Marketplace | `marketplace.md` | Install org-internal skills |
|
|
51
|
+
|
|
52
|
+
## Setup walkthrough
|
|
53
|
+
|
|
54
|
+
**Step 1 — Identity**
|
|
55
|
+
|
|
56
|
+
Ask: email address and username/user ID. Then:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
pncli config set user.email <email>
|
|
60
|
+
pncli config set user.userId <username>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Step 2 — Work item tracking**
|
|
64
|
+
|
|
65
|
+
Ask: "Does this org use Jira or Azure DevOps for work items?" See `jira.md` or `ado.md`.
|
|
66
|
+
|
|
67
|
+
**Step 3 — Source control**
|
|
68
|
+
|
|
69
|
+
Ask: "Does this org use Bitbucket or Azure DevOps for PRs?" See `bitbucket.md` or `ado.md`.
|
|
70
|
+
|
|
71
|
+
**Step 4 — Optional services**
|
|
72
|
+
|
|
73
|
+
Ask about each optional service the user may need. Read the relevant `.md` file for config keys and commands. Skip services they don't use.
|
|
74
|
+
|
|
75
|
+
**Step 5 — Repo-level defaults**
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
pncli config set --repo defaults.jira.project <key>
|
|
79
|
+
pncli config set --repo defaults.bitbucket.targetBranch <branch>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Step 6 — Test connectivity**
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
pncli config test
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Review results. If any service shows `ok: false`, help troubleshoot the URL or credentials.
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
pncli config show
|
|
92
|
+
```
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Azure DevOps (ADO)
|
|
2
|
+
|
|
3
|
+
Enables: `pncli ado workitem`, `pncli ado repo`, `pncli ado pr`, `pncli ado pipeline` — work items, repos, PRs, and pipeline builds for Azure DevOps Server (on-premise).
|
|
4
|
+
|
|
5
|
+
## Required config
|
|
6
|
+
|
|
7
|
+
| Key | Env var | Description |
|
|
8
|
+
|-----|---------|-------------|
|
|
9
|
+
| `ado.baseUrl` | `PNCLI_ADO_BASE_URL` | ADO Server root, e.g. `https://tfs.company.com` |
|
|
10
|
+
| `ado.pat` | `PNCLI_ADO_PAT` | Personal access token |
|
|
11
|
+
|
|
12
|
+
## Config file (persistent)
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
pncli config set ado.baseUrl https://tfs.company.com
|
|
16
|
+
pncli config set ado.pat <token>
|
|
17
|
+
pncli config set defaults.ado.collection DefaultCollection
|
|
18
|
+
pncli config set defaults.ado.project MyProject
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Env vars (ephemeral / CI)
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
export PNCLI_ADO_BASE_URL=https://tfs.company.com
|
|
25
|
+
export PNCLI_ADO_PAT=<token>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Repo defaults
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
pncli config set --repo defaults.ado.collection DefaultCollection
|
|
32
|
+
pncli config set --repo defaults.ado.project MyProject
|
|
33
|
+
```
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Artifactory
|
|
2
|
+
|
|
3
|
+
Enables: `pncli artifactory repo`, `pncli artifactory package` — list repositories and packages, resolve virtual repo names for npm/NuGet/Maven.
|
|
4
|
+
|
|
5
|
+
## Required config
|
|
6
|
+
|
|
7
|
+
| Key | Env var | Description |
|
|
8
|
+
|-----|---------|-------------|
|
|
9
|
+
| `artifactory.baseUrl` | `PNCLI_ARTIFACTORY_BASE_URL` | Artifactory root, e.g. `https://artifactory.company.com` |
|
|
10
|
+
| `artifactory.token` | `PNCLI_ARTIFACTORY_TOKEN` | Identity token or API key |
|
|
11
|
+
|
|
12
|
+
## Optional — virtual repo names
|
|
13
|
+
|
|
14
|
+
| Key | Env var | Description |
|
|
15
|
+
|-----|---------|-------------|
|
|
16
|
+
| `artifactory.npmRepo` | `PNCLI_ARTIFACTORY_REPO_NPM` | Virtual npm repo name |
|
|
17
|
+
| `artifactory.nugetRepo` | `PNCLI_ARTIFACTORY_REPO_NUGET` | Virtual NuGet repo name |
|
|
18
|
+
| `artifactory.mavenRepo` | `PNCLI_ARTIFACTORY_REPO_MAVEN` | Virtual Maven repo name |
|
|
19
|
+
|
|
20
|
+
## Config file (persistent)
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
pncli config set artifactory.baseUrl https://artifactory.company.com
|
|
24
|
+
pncli config set artifactory.token <token>
|
|
25
|
+
pncli config set artifactory.npmRepo npm-virtual
|
|
26
|
+
pncli config set artifactory.nugetRepo nuget-virtual
|
|
27
|
+
pncli config set artifactory.mavenRepo maven-virtual
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Env vars (ephemeral / CI)
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
export PNCLI_ARTIFACTORY_BASE_URL=https://artifactory.company.com
|
|
34
|
+
export PNCLI_ARTIFACTORY_TOKEN=<token>
|
|
35
|
+
```
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Bitbucket
|
|
2
|
+
|
|
3
|
+
Enables: `pncli bitbucket repo`, `pncli bitbucket pr`, `pncli bitbucket diff` — list repos, open/list PRs, get diffs.
|
|
4
|
+
|
|
5
|
+
## Required config
|
|
6
|
+
|
|
7
|
+
| Key | Env var | Description |
|
|
8
|
+
|-----|---------|-------------|
|
|
9
|
+
| `bitbucket.baseUrl` | `PNCLI_BITBUCKET_BASE_URL` | Bitbucket Server root, e.g. `https://bitbucket.company.com` |
|
|
10
|
+
| `bitbucket.pat` | `PNCLI_BITBUCKET_PAT` | Personal access token |
|
|
11
|
+
|
|
12
|
+
## Config file (persistent)
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
pncli config set bitbucket.baseUrl https://bitbucket.company.com
|
|
16
|
+
pncli config set bitbucket.pat <token>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Env vars (ephemeral / CI)
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
export PNCLI_BITBUCKET_BASE_URL=https://bitbucket.company.com
|
|
23
|
+
export PNCLI_BITBUCKET_PAT=<token>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Repo defaults
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
pncli config set --repo defaults.bitbucket.targetBranch main
|
|
30
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Checkmarx
|
|
2
|
+
|
|
3
|
+
Enables: `pncli checkmarx scan`, `pncli checkmarx finding` — list SAST scans and vulnerability findings.
|
|
4
|
+
|
|
5
|
+
> **Not officially supported.** Checkmarx CxSAST on-premise does not expose stable PAT-based authentication on all versions. pncli performs the OAuth2 token exchange using username and password, but behaviour varies across CxSAST versions. Use with caution and test connectivity with `pncli config test` before relying on it.
|
|
6
|
+
|
|
7
|
+
## Required config
|
|
8
|
+
|
|
9
|
+
| Key | Env var | Description |
|
|
10
|
+
|-----|---------|-------------|
|
|
11
|
+
| `checkmarx.baseUrl` | `PNCLI_CHECKMARX_BASE_URL` | CxSAST server root, e.g. `https://cx.company.com` |
|
|
12
|
+
| `checkmarx.username` | `PNCLI_CHECKMARX_USERNAME` | CxSAST username |
|
|
13
|
+
| `checkmarx.password` | `PNCLI_CHECKMARX_PASSWORD` | CxSAST password |
|
|
14
|
+
|
|
15
|
+
pncli handles the OAuth2 token exchange automatically — no external tools required.
|
|
16
|
+
|
|
17
|
+
## Config file (persistent)
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
pncli config set checkmarx.baseUrl https://cx.company.com
|
|
21
|
+
pncli config set checkmarx.username <username>
|
|
22
|
+
pncli config set checkmarx.password <password>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Env vars (ephemeral / CI)
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
export PNCLI_CHECKMARX_BASE_URL=https://cx.company.com
|
|
29
|
+
export PNCLI_CHECKMARX_USERNAME=<username>
|
|
30
|
+
export PNCLI_CHECKMARX_PASSWORD=<password>
|
|
31
|
+
```
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Confluence
|
|
2
|
+
|
|
3
|
+
Enables: `pncli confluence page`, `pncli confluence space` — list/get pages and spaces.
|
|
4
|
+
|
|
5
|
+
## Required config
|
|
6
|
+
|
|
7
|
+
| Key | Env var | Description |
|
|
8
|
+
|-----|---------|-------------|
|
|
9
|
+
| `confluence.baseUrl` | `PNCLI_CONFLUENCE_BASE_URL` | Confluence server root, e.g. `https://confluence.company.com` |
|
|
10
|
+
| `confluence.apiToken` | `PNCLI_CONFLUENCE_API_TOKEN` | Personal access token |
|
|
11
|
+
|
|
12
|
+
## Config file (persistent)
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
pncli config set confluence.baseUrl https://confluence.company.com
|
|
16
|
+
pncli config set confluence.apiToken <token>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Env vars (ephemeral / CI)
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
export PNCLI_CONFLUENCE_BASE_URL=https://confluence.company.com
|
|
23
|
+
export PNCLI_CONFLUENCE_API_TOKEN=<token>
|
|
24
|
+
```
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Contrast Security IAST
|
|
2
|
+
|
|
3
|
+
Enables: `pncli contrast apps`, `pncli contrast findings` — list applications and runtime vulnerability findings from Contrast Security.
|
|
4
|
+
|
|
5
|
+
## Required config
|
|
6
|
+
|
|
7
|
+
All four credential keys are found in your Contrast account under **User Settings → Your Keys**.
|
|
8
|
+
|
|
9
|
+
| Key | Env var | Description |
|
|
10
|
+
|-----|---------|-------------|
|
|
11
|
+
| `contrast.baseUrl` | `PNCLI_CONTRAST_BASE_URL` | Contrast instance root (required — no default) |
|
|
12
|
+
| `contrast.orgUuid` | `PNCLI_CONTRAST_ORG_UUID` | Organization UUID |
|
|
13
|
+
| `contrast.username` | `PNCLI_CONTRAST_USERNAME` | Your username (email) |
|
|
14
|
+
| `contrast.apiKey` | `PNCLI_CONTRAST_API_KEY` | API key |
|
|
15
|
+
| `contrast.serviceKey` | `PNCLI_CONTRAST_SERVICE_KEY` | Service key |
|
|
16
|
+
|
|
17
|
+
**Base URL examples:**
|
|
18
|
+
- Cloud SaaS: `https://app.contrastsecurity.com`
|
|
19
|
+
- On-premise: `https://contrast.company.com`
|
|
20
|
+
|
|
21
|
+
## Config file (persistent)
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
pncli config set contrast.baseUrl https://app.contrastsecurity.com
|
|
25
|
+
pncli config set contrast.orgUuid <org-uuid>
|
|
26
|
+
pncli config set contrast.username <email>
|
|
27
|
+
pncli config set contrast.apiKey <api-key>
|
|
28
|
+
pncli config set contrast.serviceKey <service-key>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Env vars (ephemeral / CI)
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
export PNCLI_CONTRAST_BASE_URL=https://app.contrastsecurity.com
|
|
35
|
+
export PNCLI_CONTRAST_ORG_UUID=<org-uuid>
|
|
36
|
+
export PNCLI_CONTRAST_USERNAME=<email>
|
|
37
|
+
export PNCLI_CONTRAST_API_KEY=<api-key>
|
|
38
|
+
export PNCLI_CONTRAST_SERVICE_KEY=<service-key>
|
|
39
|
+
```
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Jenkins
|
|
2
|
+
|
|
3
|
+
Enables: `pncli jenkins build`, `pncli jenkins job` — list builds, get build status and console output.
|
|
4
|
+
|
|
5
|
+
## Required config
|
|
6
|
+
|
|
7
|
+
| Key | Env var | Description |
|
|
8
|
+
|-----|---------|-------------|
|
|
9
|
+
| `jenkins.baseUrl` | `PNCLI_JENKINS_BASE_URL` | Jenkins root, e.g. `https://jenkins.company.com` |
|
|
10
|
+
| `jenkins.username` | `PNCLI_JENKINS_USERNAME` | Jenkins username |
|
|
11
|
+
| `jenkins.apiToken` | `PNCLI_JENKINS_API_TOKEN` | API token (generated in Jenkins → User → Configure → API Token) |
|
|
12
|
+
|
|
13
|
+
pncli authenticates using HTTP Basic (username + API token).
|
|
14
|
+
|
|
15
|
+
## Config file (persistent)
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
pncli config set jenkins.baseUrl https://jenkins.company.com
|
|
19
|
+
pncli config set jenkins.username <username>
|
|
20
|
+
pncli config set jenkins.apiToken <token>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Env vars (ephemeral / CI)
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
export PNCLI_JENKINS_BASE_URL=https://jenkins.company.com
|
|
27
|
+
export PNCLI_JENKINS_USERNAME=<username>
|
|
28
|
+
export PNCLI_JENKINS_API_TOKEN=<token>
|
|
29
|
+
```
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Jira
|
|
2
|
+
|
|
3
|
+
Enables: `pncli jira issue`, `pncli jira sprint`, `pncli jira project`, `pncli jira user` — list and get issues, sprints, custom fields, and project members.
|
|
4
|
+
|
|
5
|
+
## Required config
|
|
6
|
+
|
|
7
|
+
| Key | Env var | Description |
|
|
8
|
+
|-----|---------|-------------|
|
|
9
|
+
| `jira.baseUrl` | `PNCLI_JIRA_BASE_URL` | Jira server root, e.g. `https://jira.company.com` |
|
|
10
|
+
| `jira.apiToken` | `PNCLI_JIRA_API_TOKEN` | Personal access token |
|
|
11
|
+
|
|
12
|
+
## Config file (persistent)
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
pncli config set jira.baseUrl https://jira.company.com
|
|
16
|
+
pncli config set jira.apiToken <token>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Env vars (ephemeral / CI)
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
export PNCLI_JIRA_BASE_URL=https://jira.company.com
|
|
23
|
+
export PNCLI_JIRA_API_TOKEN=<token>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Repo defaults
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
pncli config set --repo defaults.jira.project ACME
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Notes
|
|
33
|
+
|
|
34
|
+
- Jira Cloud and Jira Data Center both work; token format differs (API token vs PAT)
|
|
35
|
+
- Custom fields discovered with `pncli jira project fields`
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Skills Marketplace
|
|
2
|
+
|
|
3
|
+
Enables installing org-internal Claude Code or GitHub Copilot skills from a private git-hosted marketplace repository.
|
|
4
|
+
|
|
5
|
+
## Setup
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
pncli skills marketplace setup <git-clone-url> <local-path>
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Use `--branch main` if the default branch is `main` instead of `master`. This clones the repo to `<local-path>` and stores the mapping in your pncli global config.
|
|
12
|
+
|
|
13
|
+
**Example:**
|
|
14
|
+
```
|
|
15
|
+
pncli skills marketplace setup https://bitbucket.company.com/scm/ai/skills.git ~/ai-skills
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Sync (install a plugin)
|
|
19
|
+
|
|
20
|
+
Install to `~/.agents/skills` (GitHub Copilot / Codex):
|
|
21
|
+
```
|
|
22
|
+
pncli skills marketplace sync
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Install to `~/.claude/skills` (Claude Code):
|
|
26
|
+
```
|
|
27
|
+
pncli skills marketplace sync --claude
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Pass a plugin name to skip the interactive picker:
|
|
31
|
+
```
|
|
32
|
+
pncli skills marketplace sync my-plugin --claude
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Marketplace repo structure
|
|
36
|
+
|
|
37
|
+
The marketplace repo should contain either:
|
|
38
|
+
- A `.claude-plugin/marketplace.json` file listing plugins
|
|
39
|
+
- Or a `plugins/` directory where each subdirectory is a plugin
|
|
40
|
+
|
|
41
|
+
Each plugin directory should have a `skills/` subdirectory containing skill directories (each with a `SKILL.md`).
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# SDElements
|
|
2
|
+
|
|
3
|
+
Enables: `pncli sde task` — list threat model tasks and their compliance status for a project.
|
|
4
|
+
|
|
5
|
+
## Required config
|
|
6
|
+
|
|
7
|
+
| Key | Env var | Description |
|
|
8
|
+
|-----|---------|-------------|
|
|
9
|
+
| `sde.connection` | `PNCLI_SDE_CONNECTION` | Connection string in the format `token@hostname` |
|
|
10
|
+
|
|
11
|
+
The connection string combines your API token and the SDElements hostname into a single value, e.g. `mytoken@sde.company.com`.
|
|
12
|
+
|
|
13
|
+
## Config file (persistent)
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
pncli config set sde.connection mytoken@sde.company.com
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Env vars (ephemeral / CI)
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
export PNCLI_SDE_CONNECTION=mytoken@sde.company.com
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Repo defaults
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
pncli config set --repo defaults.sde.project 123
|
|
29
|
+
```
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# ServiceNow
|
|
2
|
+
|
|
3
|
+
Enables: `pncli servicenow change`, `pncli servicenow incident` — list and get change requests and incidents.
|
|
4
|
+
|
|
5
|
+
## Required config
|
|
6
|
+
|
|
7
|
+
| Key | Env var | Description |
|
|
8
|
+
|-----|---------|-------------|
|
|
9
|
+
| `servicenow.baseUrl` | `PNCLI_SERVICENOW_BASE_URL` | Instance root, e.g. `https://mycompany.service-now.com` |
|
|
10
|
+
| `servicenow.username` | `PNCLI_SERVICENOW_USERNAME` | ServiceNow username |
|
|
11
|
+
|
|
12
|
+
### Auth — password or API token (one required)
|
|
13
|
+
|
|
14
|
+
| Key | Env var | Description |
|
|
15
|
+
|-----|---------|-------------|
|
|
16
|
+
| `servicenow.password` | `PNCLI_SERVICENOW_PASSWORD` | ServiceNow password |
|
|
17
|
+
| `servicenow.apiToken` | `PNCLI_SERVICENOW_API_TOKEN` | API token (if basic auth is disabled) |
|
|
18
|
+
|
|
19
|
+
## Config file (persistent)
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
pncli config set servicenow.baseUrl https://mycompany.service-now.com
|
|
23
|
+
pncli config set servicenow.username <username>
|
|
24
|
+
pncli config set servicenow.password <password>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Env vars (ephemeral / CI)
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
export PNCLI_SERVICENOW_BASE_URL=https://mycompany.service-now.com
|
|
31
|
+
export PNCLI_SERVICENOW_USERNAME=<username>
|
|
32
|
+
export PNCLI_SERVICENOW_PASSWORD=<password>
|
|
33
|
+
```
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# SonarQube
|
|
2
|
+
|
|
3
|
+
Enables: `pncli sonar issue`, `pncli sonar project` — list code quality and security issues by project.
|
|
4
|
+
|
|
5
|
+
## Required config
|
|
6
|
+
|
|
7
|
+
| Key | Env var | Description |
|
|
8
|
+
|-----|---------|-------------|
|
|
9
|
+
| `sonar.baseUrl` | `PNCLI_SONAR_BASE_URL` | SonarQube server root, e.g. `https://sonar.company.com` |
|
|
10
|
+
| `sonar.token` | `PNCLI_SONAR_TOKEN` | User token (generated in SonarQube → My Account → Security) |
|
|
11
|
+
|
|
12
|
+
## Config file (persistent)
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
pncli config set sonar.baseUrl https://sonar.company.com
|
|
16
|
+
pncli config set sonar.token <token>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Env vars (ephemeral / CI)
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
export PNCLI_SONAR_BASE_URL=https://sonar.company.com
|
|
23
|
+
export PNCLI_SONAR_TOKEN=<token>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Repo defaults
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
pncli config set --repo defaults.sonar.project my-project-key
|
|
30
|
+
```
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Sonatype IQ Server
|
|
2
|
+
|
|
3
|
+
Enables: `pncli sonatypeiq applications`, `pncli deps frisk --source sonatypeiq` — list applications and scan dependencies against your IQ Server security policies.
|
|
4
|
+
|
|
5
|
+
## Required config
|
|
6
|
+
|
|
7
|
+
| Key | Env var | Description |
|
|
8
|
+
|-----|---------|-------------|
|
|
9
|
+
| `sonatypeiq.baseUrl` | `PNCLI_SONATYPEIQ_BASE_URL` | IQ Server root, e.g. `https://iq.company.com` |
|
|
10
|
+
| `sonatypeiq.userCode` | `PNCLI_SONATYPEIQ_USER_CODE` | User Token code (from User Menu → User Token) |
|
|
11
|
+
| `sonatypeiq.passcode` | `PNCLI_SONATYPEIQ_PASSCODE` | User Token passcode (from User Menu → User Token) |
|
|
12
|
+
|
|
13
|
+
The `userCode` and `passcode` are User Token credentials, not your login password.
|
|
14
|
+
|
|
15
|
+
## Config file (persistent)
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
pncli config set sonatypeiq.baseUrl https://iq.company.com
|
|
19
|
+
pncli config set sonatypeiq.userCode <user-code>
|
|
20
|
+
pncli config set sonatypeiq.passcode <passcode>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Env vars (ephemeral / CI)
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
export PNCLI_SONATYPEIQ_BASE_URL=https://iq.company.com
|
|
27
|
+
export PNCLI_SONATYPEIQ_USER_CODE=<user-code>
|
|
28
|
+
export PNCLI_SONATYPEIQ_PASSCODE=<passcode>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Usage
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
# Discover application IDs
|
|
35
|
+
pncli sonatypeiq applications list
|
|
36
|
+
|
|
37
|
+
# Scan dependencies against IQ policies
|
|
38
|
+
pncli deps frisk --source sonatypeiq --application-id <id>
|
|
39
|
+
```
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# IBM UrbanCode Deploy (uDeploy)
|
|
2
|
+
|
|
3
|
+
Enables: `pncli udeploy component`, `pncli udeploy version`, `pncli udeploy process` — list component versions and trigger deployment processes.
|
|
4
|
+
|
|
5
|
+
> **Not officially supported.** IBM UrbanCode Deploy on-premise does not reliably support PAT tokens across all versions and configurations. Authentication via username/password works on most installs; PAT support is version-dependent. Test connectivity with `pncli config test` before relying on it.
|
|
6
|
+
|
|
7
|
+
## Required config
|
|
8
|
+
|
|
9
|
+
| Key | Env var | Description |
|
|
10
|
+
|-----|---------|-------------|
|
|
11
|
+
| `udeploy.baseUrl` | `PNCLI_UDEPLOY_BASE_URL` | UCD server root, e.g. `https://ucd.company.com` |
|
|
12
|
+
|
|
13
|
+
### Auth option A — PAT
|
|
14
|
+
|
|
15
|
+
| Key | Env var | Description |
|
|
16
|
+
|-----|---------|-------------|
|
|
17
|
+
| `udeploy.pat` | `PNCLI_UDEPLOY_PAT` | Personal access token |
|
|
18
|
+
|
|
19
|
+
### Auth option B — Username/password
|
|
20
|
+
|
|
21
|
+
| Key | Env var | Description |
|
|
22
|
+
|-----|---------|-------------|
|
|
23
|
+
| `udeploy.username` | `PNCLI_UDEPLOY_USERNAME` | UCD username |
|
|
24
|
+
| `udeploy.password` | `PNCLI_UDEPLOY_PASSWORD` | UCD password |
|
|
25
|
+
|
|
26
|
+
## Config file (persistent)
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
pncli config set udeploy.baseUrl https://ucd.company.com
|
|
30
|
+
pncli config set udeploy.pat <token>
|
|
31
|
+
# or
|
|
32
|
+
pncli config set udeploy.username <username>
|
|
33
|
+
pncli config set udeploy.password <password>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Env vars (ephemeral / CI)
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
export PNCLI_UDEPLOY_BASE_URL=https://ucd.company.com
|
|
40
|
+
export PNCLI_UDEPLOY_PAT=<token>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Repo defaults
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
pncli config set --repo defaults.udeploy.application MyApp
|
|
47
|
+
pncli config set --repo defaults.udeploy.environment Production
|
|
48
|
+
```
|