Skip to content

Commit 942130b

Browse files
committed
polish: ship-ready repo chrome, rewrite README, add wiki + social preview
README: replaced three prose-heavy sections with conversation-contrast code block, before/after table, and a mermaid topology. Added mandatory Limitations and vs-raw-ssh comparison sections. Removed banned marketing phrase. CHANGELOG: wrote [3.2.2] section from git history covering the host-key MITM fix, cwd shell-injection fix, SFTP/exec/sftp/forwardOut/shell passthrough fixes, 13 aligned tool schemas, and CI upgrades. Split prior work into [3.2.1]. Repo chrome: SECURITY.md with private disclosure flow and hardening checklist, CODEOWNERS gating security-sensitive paths, dependabot weekly (npm + actions), codeql.yml with security-extended queries, release.yml triggered on tag push with changelog extraction and tag-vs-package version guard, YAML issue forms replacing markdown templates, .editorconfig, .nvmrc. package.json: description 287->136 chars, keywords 37->8 (deduped search-poisoning variants). Wiki: 10 pages (~1050 lines) with mermaid diagrams and GitHub alert callouts. Covers home, getting-started, configuration, tool reference (51 tools across 7 groups), architecture, security model, recipes (10 real workflows), and troubleshooting. Staged at /tmp/claude-code-ssh.wiki awaiting GitHub wiki bootstrap. Social preview: 1280x640 flat-typography PNG rendered from SVG via rsvg-convert. Dark charcoal background, single green accent, monospace "claude-code-ssh" with tagline. Old hero image preserved as assets/repo-image-legacy.png. Docs: fixed two marksman diagnostics (dead DEPLOYMENT_GUIDE.md link in BACKUP_GUIDE; ambiguous CLAUDE.md link in TOOL_MANAGEMENT). CLAUDE.md: corrected 6 -> 7 groups, added gamechanger to group list. .eslintrc.json: added argsIgnorePattern/varsIgnorePattern/caughtErrorsIgnorePattern for the "^_" convention, removing six spurious warnings in plan-tools.js.
1 parent e4d81f6 commit 942130b

32 files changed

Lines changed: 1533 additions & 110 deletions

.editorconfig

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
root = true
2+
3+
[*]
4+
indent_style = space
5+
indent_size = 2
6+
end_of_line = lf
7+
charset = utf-8
8+
trim_trailing_whitespace = true
9+
insert_final_newline = true
10+
11+
[*.md]
12+
trim_trailing_whitespace = false
13+
14+
[Makefile]
15+
indent_style = tab
16+
17+
[*.{sh,bash}]
18+
indent_size = 2

.eslintrc.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"linebreak-style": ["error", "unix"],
1414
"quotes": ["error", "single"],
1515
"semi": ["error", "always"],
16-
"no-unused-vars": ["warn"],
16+
"no-unused-vars": ["warn", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_", "caughtErrorsIgnorePattern": "^_" }],
1717
"no-console": ["warn", { "allow": ["warn", "error"] }],
1818
"no-trailing-spaces": ["error"],
1919
"eol-last": ["error", "always"],

.github/CODEOWNERS

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Default: all files reviewed by the repo owner.
2+
* @hunchom
3+
4+
# Security-sensitive paths — require owner review explicitly.
5+
/src/stream-exec.js @hunchom
6+
/src/tools/exec-tools.js @hunchom
7+
/src/tools/db-tools.js @hunchom
8+
/SECURITY.md @hunchom
9+
/.github/workflows/ @hunchom

.github/ISSUE_TEMPLATE/bug_report.md

Lines changed: 0 additions & 32 deletions
This file was deleted.
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
name: Bug report
2+
description: Something broken in claude-code-ssh
3+
labels: [bug]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Thanks for reporting. Please include enough detail that a maintainer can reproduce without asking follow-ups.
9+
10+
- type: input
11+
id: version
12+
attributes:
13+
label: Version
14+
description: Output of `node -p "require('./package.json').version"` or `ssh-manager --version`
15+
placeholder: 3.2.2
16+
validations:
17+
required: true
18+
19+
- type: dropdown
20+
id: client
21+
attributes:
22+
label: MCP client
23+
options:
24+
- Claude Code
25+
- OpenAI Codex
26+
- Other (explain below)
27+
validations:
28+
required: true
29+
30+
- type: input
31+
id: node
32+
attributes:
33+
label: Node version
34+
placeholder: v20.11.0
35+
validations:
36+
required: true
37+
38+
- type: input
39+
id: os
40+
attributes:
41+
label: Operating system
42+
placeholder: macOS 15.2, Ubuntu 24.04, ...
43+
validations:
44+
required: true
45+
46+
- type: textarea
47+
id: what-happened
48+
attributes:
49+
label: What happened
50+
description: Describe the actual behavior. Include the tool name if you know it.
51+
validations:
52+
required: true
53+
54+
- type: textarea
55+
id: expected
56+
attributes:
57+
label: What should have happened
58+
validations:
59+
required: true
60+
61+
- type: textarea
62+
id: reproduce
63+
attributes:
64+
label: How to reproduce
65+
description: Minimal steps. If a specific SSH host setup matters (proxy_jump, Windows platform, etc.), include that.
66+
placeholder: |
67+
1. Configure server with `SSH_SERVER_X_PROXYJUMP=bastion`
68+
2. Ask Claude to `ssh_execute` with cwd `/tmp`
69+
3. Tool returns error ...
70+
validations:
71+
required: true
72+
73+
- type: textarea
74+
id: logs
75+
attributes:
76+
label: Logs
77+
description: Paste output from `~/.ssh-manager.log` or MCP stderr. Run with `SSH_LOG_LEVEL=DEBUG` if you can.
78+
render: shell
79+
80+
- type: checkboxes
81+
id: checked
82+
attributes:
83+
label: Pre-flight
84+
options:
85+
- label: I searched existing issues and this is not a duplicate
86+
required: true
87+
- label: I redacted any credentials, hostnames, or paths from logs above
88+
required: true

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Security vulnerability
4+
url: https://github.com/hunchom/claude-code-ssh/security/advisories/new
5+
about: Report privately via GitHub Security Advisories. Do not open a public issue for security bugs.
6+
- name: Question or discussion
7+
url: https://github.com/hunchom/claude-code-ssh/discussions
8+
about: Usage questions, setup help, design discussion.

.github/ISSUE_TEMPLATE/feature_request.md

Lines changed: 0 additions & 20 deletions
This file was deleted.
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
name: Feature request
2+
description: Something claude-code-ssh should do that it doesn't
3+
labels: [enhancement]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Good feature requests describe a real workflow that's painful today and the outcome you want, not a specific implementation.
9+
10+
- type: textarea
11+
id: problem
12+
attributes:
13+
label: The problem
14+
description: What's the workflow you're trying to do, and where does it break down?
15+
validations:
16+
required: true
17+
18+
- type: textarea
19+
id: desired
20+
attributes:
21+
label: What you'd want Claude to be able to say
22+
description: A concrete example of the interaction you'd want.
23+
placeholder: |
24+
"ssh into prod03, check redis memory, restart if > 8GB"
25+
validations:
26+
required: true
27+
28+
- type: textarea
29+
id: existing
30+
attributes:
31+
label: Why existing tools don't cover it
32+
description: Did you try a combination of ssh_execute, ssh_service_status, ssh_tail? What was missing?
33+
34+
- type: textarea
35+
id: alternatives
36+
attributes:
37+
label: Alternatives you've considered
38+
description: Other tools, workarounds, or designs you looked at.
39+
40+
- type: dropdown
41+
id: scope
42+
attributes:
43+
label: Where does this belong
44+
options:
45+
- New tool in an existing group
46+
- New tool group
47+
- Change to an existing tool's schema/behavior
48+
- Docs / examples
49+
- Unsure
50+
validations:
51+
required: true

.github/dependabot.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: npm
4+
directory: "/"
5+
schedule:
6+
interval: weekly
7+
day: monday
8+
open-pull-requests-limit: 5
9+
groups:
10+
production:
11+
dependency-type: production
12+
update-types: [minor, patch]
13+
development:
14+
dependency-type: development
15+
update-types: [minor, patch]
16+
labels: [dependencies]
17+
commit-message:
18+
prefix: "deps"
19+
include: scope
20+
21+
- package-ecosystem: github-actions
22+
directory: "/"
23+
schedule:
24+
interval: weekly
25+
day: monday
26+
open-pull-requests-limit: 3
27+
groups:
28+
actions:
29+
patterns: ["*"]
30+
labels: [dependencies, ci]
31+
commit-message:
32+
prefix: "ci"

.github/workflows/codeql.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: codeql
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
schedule:
9+
- cron: "0 6 * * 1"
10+
11+
permissions:
12+
actions: read
13+
contents: read
14+
security-events: write
15+
16+
jobs:
17+
analyze:
18+
name: analyze
19+
runs-on: ubuntu-latest
20+
strategy:
21+
fail-fast: false
22+
matrix:
23+
language: [javascript]
24+
steps:
25+
- uses: actions/checkout@v5
26+
- uses: github/codeql-action/init@v3
27+
with:
28+
languages: ${{ matrix.language }}
29+
queries: security-extended,security-and-quality
30+
- uses: github/codeql-action/analyze@v3
31+
with:
32+
category: "/language:${{ matrix.language }}"

0 commit comments

Comments
 (0)