recoder-code 1.0.113
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/.babelrc +4 -0
- package/.claude/commands/commit-push-pr.md +19 -0
- package/.claude/commands/dedupe.md +38 -0
- package/.devcontainer/Dockerfile +91 -0
- package/.devcontainer/devcontainer.json +57 -0
- package/.devcontainer/init-firewall.sh +137 -0
- package/.gitattributes +2 -0
- package/.github/ISSUE_TEMPLATE/bug_report.yml +188 -0
- package/.github/ISSUE_TEMPLATE/config.yml +17 -0
- package/.github/ISSUE_TEMPLATE/documentation.yml +117 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +132 -0
- package/.github/ISSUE_TEMPLATE/model_behavior.yml +220 -0
- package/.github/workflows/auto-close-duplicates.yml +31 -0
- package/.github/workflows/backfill-duplicate-comments.yml +44 -0
- package/.github/workflows/claude-dedupe-issues.yml +80 -0
- package/.github/workflows/claude-issue-triage.yml +106 -0
- package/.github/workflows/claude.yml +37 -0
- package/.github/workflows/issue-opened-dispatch.yml +28 -0
- package/.github/workflows/lock-closed-issues.yml +92 -0
- package/.github/workflows/log-issue-events.yml +40 -0
- package/CHANGELOG.md +646 -0
- package/KILO.md +1273 -0
- package/LICENSE.md +21 -0
- package/README.md +176 -0
- package/SECURITY.md +12 -0
- package/Script/run_devcontainer_claude_code.ps1 +152 -0
- package/api/githubApi.ts +144 -0
- package/babel.config.js +7 -0
- package/cli/.gitkeep +0 -0
- package/cli/auto-close-duplicates.ts +5 -0
- package/cli/configure.js +33 -0
- package/cli/list-models.js +48 -0
- package/cli/run.js +61 -0
- package/cli/set-api-key.js +26 -0
- package/config.json +4 -0
- package/demo.gif +0 -0
- package/examples/gpt-3.5-turbo.js +38 -0
- package/examples/gpt-4.js +38 -0
- package/examples/hooks/bash_command_validator_example.py +83 -0
- package/index.d.ts +3 -0
- package/index.js +62 -0
- package/jest.config.js +6 -0
- package/openapi.yaml +61 -0
- package/package.json +47 -0
- package/scripts/backfill-duplicate-comments.ts +213 -0
- package/tests/api-githubApi.test.ts +30 -0
- package/tests/auto-close-duplicates.test.ts +145 -0
- package/tests/cli-configure.test.ts +88 -0
- package/tests/cli-list-models.test.ts +44 -0
- package/tests/cli-run.test.ts +97 -0
- package/tests/cli-set-api-key.test.ts +54 -0
- package/tests/cli-validate-api-key.test.ts +52 -0
- package/tsconfig.json +18 -0
package/.babelrc
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
allowed-tools: Bash(git checkout --branch:*), Bash(git add:*), Bash(git status:*), Bash(git push:*), Bash(git commit:*), Bash(gh pr create:*)
|
|
3
|
+
description: Commit, push, and open a PR
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
|
|
8
|
+
- Current git status: !`git status`
|
|
9
|
+
- Current git diff (staged and unstaged changes): !`git diff HEAD`
|
|
10
|
+
- Current branch: !`git branch --show-current`
|
|
11
|
+
|
|
12
|
+
## Your task
|
|
13
|
+
|
|
14
|
+
Based on the above changes:
|
|
15
|
+
1. Create a new branch if on main
|
|
16
|
+
2. Create a single commit with an appropriate message
|
|
17
|
+
3. Push the branch to origin
|
|
18
|
+
4. Create a pull request using `gh pr create`
|
|
19
|
+
5. You have the capability to call multiple tools in a single response. You MUST do all of the above in a single message. Do not use any other tools or do anything else. Do not send any other text or messages besides these tool calls.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
allowed-tools: Bash(gh issue view:*), Bash(gh search:*), Bash(gh issue list:*), Bash(gh api:*), Bash(gh issue comment:*)
|
|
3
|
+
description: Find duplicate GitHub issues
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Find up to 3 likely duplicate issues for a given GitHub issue.
|
|
7
|
+
|
|
8
|
+
To do this, follow these steps precisely:
|
|
9
|
+
|
|
10
|
+
1. Use an agent to check if the Github issue (a) is closed, (b) does not need to be deduped (eg. because it is broad product feedback without a specific solution, or positive feedback), or (c) already has a duplicates comment that you made earlier. If so, do not proceed.
|
|
11
|
+
2. Use an agent to view a Github issue, and ask the agent to return a summary of the issue
|
|
12
|
+
3. Then, launch 5 parallel agents to search Github for duplicates of this issue, using diverse keywords and search approaches, using the summary from #1
|
|
13
|
+
4. Next, feed the results from #1 and #2 into another agent, so that it can filter out false positives, that are likely not actually duplicates of the original issue. If there are no duplicates remaining, do not proceed.
|
|
14
|
+
5. Finally, comment back on the issue with a list of up to three duplicate issues (or zero, if there are no likely duplicates)
|
|
15
|
+
|
|
16
|
+
Notes (be sure to tell this to your agents, too):
|
|
17
|
+
|
|
18
|
+
- Use `gh` to interact with Github, rather than web fetch
|
|
19
|
+
- Do not use other tools, beyond `gh` (eg. don't use other MCP servers, file edit, etc.)
|
|
20
|
+
- Make a todo list first
|
|
21
|
+
- For your comment, follow the following format precisely (assuming for this example that you found 3 suspected duplicates):
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
Found 3 possible duplicate issues:
|
|
26
|
+
|
|
27
|
+
1. <link to issue>
|
|
28
|
+
2. <link to issue>
|
|
29
|
+
3. <link to issue>
|
|
30
|
+
|
|
31
|
+
This issue will be automatically closed as a duplicate in 3 days.
|
|
32
|
+
|
|
33
|
+
- If your issue is a duplicate, please close it and 👍 the existing issue instead
|
|
34
|
+
- To prevent auto-closure, add a comment or 👎 this comment
|
|
35
|
+
|
|
36
|
+
🤖 Generated with [Recoder Code](https://claude.ai/code)
|
|
37
|
+
|
|
38
|
+
---
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
FROM node:20
|
|
2
|
+
|
|
3
|
+
ARG TZ
|
|
4
|
+
ENV TZ="$TZ"
|
|
5
|
+
|
|
6
|
+
ARG CLAUDE_CODE_VERSION=latest
|
|
7
|
+
|
|
8
|
+
# Install basic development tools and iptables/ipset
|
|
9
|
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
10
|
+
less \
|
|
11
|
+
git \
|
|
12
|
+
procps \
|
|
13
|
+
sudo \
|
|
14
|
+
fzf \
|
|
15
|
+
zsh \
|
|
16
|
+
man-db \
|
|
17
|
+
unzip \
|
|
18
|
+
gnupg2 \
|
|
19
|
+
gh \
|
|
20
|
+
iptables \
|
|
21
|
+
ipset \
|
|
22
|
+
iproute2 \
|
|
23
|
+
dnsutils \
|
|
24
|
+
aggregate \
|
|
25
|
+
jq \
|
|
26
|
+
nano \
|
|
27
|
+
vim \
|
|
28
|
+
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
|
29
|
+
|
|
30
|
+
# Ensure default node user has access to /usr/local/share
|
|
31
|
+
RUN mkdir -p /usr/local/share/npm-global && \
|
|
32
|
+
chown -R node:node /usr/local/share
|
|
33
|
+
|
|
34
|
+
ARG USERNAME=node
|
|
35
|
+
|
|
36
|
+
# Persist bash history.
|
|
37
|
+
RUN SNIPPET="export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \
|
|
38
|
+
&& mkdir /commandhistory \
|
|
39
|
+
&& touch /commandhistory/.bash_history \
|
|
40
|
+
&& chown -R $USERNAME /commandhistory
|
|
41
|
+
|
|
42
|
+
# Set `DEVCONTAINER` environment variable to help with orientation
|
|
43
|
+
ENV DEVCONTAINER=true
|
|
44
|
+
|
|
45
|
+
# Create workspace and config directories and set permissions
|
|
46
|
+
RUN mkdir -p /workspace /home/node/.claude && \
|
|
47
|
+
chown -R node:node /workspace /home/node/.claude
|
|
48
|
+
|
|
49
|
+
WORKDIR /workspace
|
|
50
|
+
|
|
51
|
+
ARG GIT_DELTA_VERSION=0.18.2
|
|
52
|
+
RUN ARCH=$(dpkg --print-architecture) && \
|
|
53
|
+
wget "https://github.com/dandavison/delta/releases/download/${GIT_DELTA_VERSION}/git-delta_${GIT_DELTA_VERSION}_${ARCH}.deb" && \
|
|
54
|
+
sudo dpkg -i "git-delta_${GIT_DELTA_VERSION}_${ARCH}.deb" && \
|
|
55
|
+
rm "git-delta_${GIT_DELTA_VERSION}_${ARCH}.deb"
|
|
56
|
+
|
|
57
|
+
# Set up non-root user
|
|
58
|
+
USER node
|
|
59
|
+
|
|
60
|
+
# Install global packages
|
|
61
|
+
ENV NPM_CONFIG_PREFIX=/usr/local/share/npm-global
|
|
62
|
+
ENV PATH=$PATH:/usr/local/share/npm-global/bin
|
|
63
|
+
|
|
64
|
+
# Set the default shell to zsh rather than sh
|
|
65
|
+
ENV SHELL=/bin/zsh
|
|
66
|
+
|
|
67
|
+
# Set the default editor and visual
|
|
68
|
+
ENV EDITOR=nano
|
|
69
|
+
ENV VISUAL=nano
|
|
70
|
+
|
|
71
|
+
# Default powerline10k theme
|
|
72
|
+
ARG ZSH_IN_DOCKER_VERSION=1.2.0
|
|
73
|
+
RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/v${ZSH_IN_DOCKER_VERSION}/zsh-in-docker.sh)" -- \
|
|
74
|
+
-p git \
|
|
75
|
+
-p fzf \
|
|
76
|
+
-a "source /usr/share/doc/fzf/examples/key-bindings.zsh" \
|
|
77
|
+
-a "source /usr/share/doc/fzf/examples/completion.zsh" \
|
|
78
|
+
-a "export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \
|
|
79
|
+
-x
|
|
80
|
+
|
|
81
|
+
# Install Recoder
|
|
82
|
+
RUN npm install -g @anthropic-ai/claude-code@${CLAUDE_CODE_VERSION}
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
# Copy and set up firewall script
|
|
86
|
+
COPY init-firewall.sh /usr/local/bin/
|
|
87
|
+
USER root
|
|
88
|
+
RUN chmod +x /usr/local/bin/init-firewall.sh && \
|
|
89
|
+
echo "node ALL=(root) NOPASSWD: /usr/local/bin/init-firewall.sh" > /etc/sudoers.d/node-firewall && \
|
|
90
|
+
chmod 0440 /etc/sudoers.d/node-firewall
|
|
91
|
+
USER node
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Recoder Code Sandbox",
|
|
3
|
+
"build": {
|
|
4
|
+
"dockerfile": "Dockerfile",
|
|
5
|
+
"args": {
|
|
6
|
+
"TZ": "${localEnv:TZ:America/Los_Angeles}",
|
|
7
|
+
"CLAUDE_CODE_VERSION": "latest",
|
|
8
|
+
"GIT_DELTA_VERSION": "0.18.2",
|
|
9
|
+
"ZSH_IN_DOCKER_VERSION": "1.2.0"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"runArgs": [
|
|
13
|
+
"--cap-add=NET_ADMIN",
|
|
14
|
+
"--cap-add=NET_RAW"
|
|
15
|
+
],
|
|
16
|
+
"customizations": {
|
|
17
|
+
"vscode": {
|
|
18
|
+
"extensions": [
|
|
19
|
+
"anthropic.claude-code",
|
|
20
|
+
"dbaeumer.vscode-eslint",
|
|
21
|
+
"esbenp.prettier-vscode",
|
|
22
|
+
"eamodio.gitlens"
|
|
23
|
+
],
|
|
24
|
+
"settings": {
|
|
25
|
+
"editor.formatOnSave": true,
|
|
26
|
+
"editor.defaultFormatter": "Anthropic.claude-code",
|
|
27
|
+
"editor.codeActionsOnSave": {
|
|
28
|
+
"source.fixAll.eslint": "explicit"
|
|
29
|
+
},
|
|
30
|
+
"terminal.integrated.defaultProfile.linux": "zsh",
|
|
31
|
+
"terminal.integrated.profiles.linux": {
|
|
32
|
+
"bash": {
|
|
33
|
+
"path": "bash",
|
|
34
|
+
"icon": "terminal-bash"
|
|
35
|
+
},
|
|
36
|
+
"zsh": {
|
|
37
|
+
"path": "zsh"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"remoteUser": "node",
|
|
44
|
+
"mounts": [
|
|
45
|
+
"source=claude-code-bashhistory-${devcontainerId},target=/commandhistory,type=volume",
|
|
46
|
+
"source=claude-code-config-${devcontainerId},target=/home/node/.claude,type=volume"
|
|
47
|
+
],
|
|
48
|
+
"containerEnv": {
|
|
49
|
+
"NODE_OPTIONS": "--max-old-space-size=4096",
|
|
50
|
+
"CLAUDE_CONFIG_DIR": "/home/node/.claude",
|
|
51
|
+
"POWERLEVEL9K_DISABLE_GITSTATUS": "true"
|
|
52
|
+
},
|
|
53
|
+
"workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=delegated",
|
|
54
|
+
"workspaceFolder": "/workspace",
|
|
55
|
+
"postStartCommand": "sudo /usr/local/bin/init-firewall.sh",
|
|
56
|
+
"waitFor": "postStartCommand"
|
|
57
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -euo pipefail # Exit on error, undefined vars, and pipeline failures
|
|
3
|
+
IFS=$'\n\t' # Stricter word splitting
|
|
4
|
+
|
|
5
|
+
# 1. Extract Docker DNS info BEFORE any flushing
|
|
6
|
+
DOCKER_DNS_RULES=$(iptables-save -t nat | grep "127\.0\.0\.11" || true)
|
|
7
|
+
|
|
8
|
+
# Flush existing rules and delete existing ipsets
|
|
9
|
+
iptables -F
|
|
10
|
+
iptables -X
|
|
11
|
+
iptables -t nat -F
|
|
12
|
+
iptables -t nat -X
|
|
13
|
+
iptables -t mangle -F
|
|
14
|
+
iptables -t mangle -X
|
|
15
|
+
ipset destroy allowed-domains 2>/dev/null || true
|
|
16
|
+
|
|
17
|
+
# 2. Selectively restore ONLY internal Docker DNS resolution
|
|
18
|
+
if [ -n "$DOCKER_DNS_RULES" ]; then
|
|
19
|
+
echo "Restoring Docker DNS rules..."
|
|
20
|
+
iptables -t nat -N DOCKER_OUTPUT 2>/dev/null || true
|
|
21
|
+
iptables -t nat -N DOCKER_POSTROUTING 2>/dev/null || true
|
|
22
|
+
echo "$DOCKER_DNS_RULES" | xargs -L 1 iptables -t nat
|
|
23
|
+
else
|
|
24
|
+
echo "No Docker DNS rules to restore"
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
# First allow DNS and localhost before any restrictions
|
|
28
|
+
# Allow outbound DNS
|
|
29
|
+
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
|
|
30
|
+
# Allow inbound DNS responses
|
|
31
|
+
iptables -A INPUT -p udp --sport 53 -j ACCEPT
|
|
32
|
+
# Allow outbound SSH
|
|
33
|
+
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
|
|
34
|
+
# Allow inbound SSH responses
|
|
35
|
+
iptables -A INPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
|
|
36
|
+
# Allow localhost
|
|
37
|
+
iptables -A INPUT -i lo -j ACCEPT
|
|
38
|
+
iptables -A OUTPUT -o lo -j ACCEPT
|
|
39
|
+
|
|
40
|
+
# Create ipset with CIDR support
|
|
41
|
+
ipset create allowed-domains hash:net
|
|
42
|
+
|
|
43
|
+
# Fetch GitHub meta information and aggregate + add their IP ranges
|
|
44
|
+
echo "Fetching GitHub IP ranges..."
|
|
45
|
+
gh_ranges=$(curl -s https://api.github.com/meta)
|
|
46
|
+
if [ -z "$gh_ranges" ]; then
|
|
47
|
+
echo "ERROR: Failed to fetch GitHub IP ranges"
|
|
48
|
+
exit 1
|
|
49
|
+
fi
|
|
50
|
+
|
|
51
|
+
if ! echo "$gh_ranges" | jq -e '.web and .api and .git' >/dev/null; then
|
|
52
|
+
echo "ERROR: GitHub API response missing required fields"
|
|
53
|
+
exit 1
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
echo "Processing GitHub IPs..."
|
|
57
|
+
while read -r cidr; do
|
|
58
|
+
if [[ ! "$cidr" =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$ ]]; then
|
|
59
|
+
echo "ERROR: Invalid CIDR range from GitHub meta: $cidr"
|
|
60
|
+
exit 1
|
|
61
|
+
fi
|
|
62
|
+
echo "Adding GitHub range $cidr"
|
|
63
|
+
ipset add allowed-domains "$cidr"
|
|
64
|
+
done < <(echo "$gh_ranges" | jq -r '(.web + .api + .git)[]' | aggregate -q)
|
|
65
|
+
|
|
66
|
+
# Resolve and add other allowed domains
|
|
67
|
+
for domain in \
|
|
68
|
+
"registry.npmjs.org" \
|
|
69
|
+
"api.anthropic.com" \
|
|
70
|
+
"sentry.io" \
|
|
71
|
+
"statsig.anthropic.com" \
|
|
72
|
+
"statsig.com" \
|
|
73
|
+
"marketplace.visualstudio.com" \
|
|
74
|
+
"vscode.blob.core.windows.net" \
|
|
75
|
+
"update.code.visualstudio.com"; do
|
|
76
|
+
echo "Resolving $domain..."
|
|
77
|
+
ips=$(dig +noall +answer A "$domain" | awk '$4 == "A" {print $5}')
|
|
78
|
+
if [ -z "$ips" ]; then
|
|
79
|
+
echo "ERROR: Failed to resolve $domain"
|
|
80
|
+
exit 1
|
|
81
|
+
fi
|
|
82
|
+
|
|
83
|
+
while read -r ip; do
|
|
84
|
+
if [[ ! "$ip" =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
|
|
85
|
+
echo "ERROR: Invalid IP from DNS for $domain: $ip"
|
|
86
|
+
exit 1
|
|
87
|
+
fi
|
|
88
|
+
echo "Adding $ip for $domain"
|
|
89
|
+
ipset add allowed-domains "$ip"
|
|
90
|
+
done < <(echo "$ips")
|
|
91
|
+
done
|
|
92
|
+
|
|
93
|
+
# Get host IP from default route
|
|
94
|
+
HOST_IP=$(ip route | grep default | cut -d" " -f3)
|
|
95
|
+
if [ -z "$HOST_IP" ]; then
|
|
96
|
+
echo "ERROR: Failed to detect host IP"
|
|
97
|
+
exit 1
|
|
98
|
+
fi
|
|
99
|
+
|
|
100
|
+
HOST_NETWORK=$(echo "$HOST_IP" | sed "s/\.[0-9]*$/.0\/24/")
|
|
101
|
+
echo "Host network detected as: $HOST_NETWORK"
|
|
102
|
+
|
|
103
|
+
# Set up remaining iptables rules
|
|
104
|
+
iptables -A INPUT -s "$HOST_NETWORK" -j ACCEPT
|
|
105
|
+
iptables -A OUTPUT -d "$HOST_NETWORK" -j ACCEPT
|
|
106
|
+
|
|
107
|
+
# Set default policies to DROP first
|
|
108
|
+
iptables -P INPUT DROP
|
|
109
|
+
iptables -P FORWARD DROP
|
|
110
|
+
iptables -P OUTPUT DROP
|
|
111
|
+
|
|
112
|
+
# First allow established connections for already approved traffic
|
|
113
|
+
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
|
|
114
|
+
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
|
|
115
|
+
|
|
116
|
+
# Then allow only specific outbound traffic to allowed domains
|
|
117
|
+
iptables -A OUTPUT -m set --match-set allowed-domains dst -j ACCEPT
|
|
118
|
+
|
|
119
|
+
# Explicitly REJECT all other outbound traffic for immediate feedback
|
|
120
|
+
iptables -A OUTPUT -j REJECT --reject-with icmp-admin-prohibited
|
|
121
|
+
|
|
122
|
+
echo "Firewall configuration complete"
|
|
123
|
+
echo "Verifying firewall rules..."
|
|
124
|
+
if curl --connect-timeout 5 https://example.com >/dev/null 2>&1; then
|
|
125
|
+
echo "ERROR: Firewall verification failed - was able to reach https://example.com"
|
|
126
|
+
exit 1
|
|
127
|
+
else
|
|
128
|
+
echo "Firewall verification passed - unable to reach https://example.com as expected"
|
|
129
|
+
fi
|
|
130
|
+
|
|
131
|
+
# Verify GitHub API access
|
|
132
|
+
if ! curl --connect-timeout 5 https://api.github.com/zen >/dev/null 2>&1; then
|
|
133
|
+
echo "ERROR: Firewall verification failed - unable to reach https://api.github.com"
|
|
134
|
+
exit 1
|
|
135
|
+
else
|
|
136
|
+
echo "Firewall verification passed - able to reach https://api.github.com as expected"
|
|
137
|
+
fi
|
package/.gitattributes
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
name: 🐛 Bug Report
|
|
2
|
+
description: Report a bug or unexpected behavior in Recoder Code
|
|
3
|
+
title: "[BUG] "
|
|
4
|
+
labels:
|
|
5
|
+
- bug
|
|
6
|
+
body:
|
|
7
|
+
- type: markdown
|
|
8
|
+
attributes:
|
|
9
|
+
value: |
|
|
10
|
+
Thanks for taking the time to report this bug! Please fill out the sections below to help us understand and fix the issue.
|
|
11
|
+
|
|
12
|
+
Before submitting, please check:
|
|
13
|
+
- You're using the [latest version](https://www.npmjs.com/package/@anthropic-ai/claude-code?activeTab=versions) of Recoder Code (`claude --version`)
|
|
14
|
+
- This issue hasn't already been reported by searching [existing issues](https://github.com/anthropics/claude-code/issues?q=is%3Aissue%20state%3Aopen%20label%3Abug).
|
|
15
|
+
- This is a bug, not a feature request or support question
|
|
16
|
+
|
|
17
|
+
- type: checkboxes
|
|
18
|
+
id: preflight
|
|
19
|
+
attributes:
|
|
20
|
+
label: Preflight Checklist
|
|
21
|
+
description: Please confirm before submitting
|
|
22
|
+
options:
|
|
23
|
+
- label: I have searched [existing issues](https://github.com/anthropics/claude-code/issues?q=is%3Aissue%20state%3Aopen%20label%3Abug) and this hasn't been reported yet
|
|
24
|
+
required: true
|
|
25
|
+
- label: This is a single bug report (please file separate reports for different bugs)
|
|
26
|
+
required: true
|
|
27
|
+
- label: I am using the latest version of Recoder Code
|
|
28
|
+
required: true
|
|
29
|
+
|
|
30
|
+
- type: textarea
|
|
31
|
+
id: actual
|
|
32
|
+
attributes:
|
|
33
|
+
label: What's Wrong?
|
|
34
|
+
description: Describe what's happening that shouldn't be
|
|
35
|
+
placeholder: |
|
|
36
|
+
When I try to create a Python file, Recoder shows an error "EACCES: permission denied" and the file isn't created.
|
|
37
|
+
|
|
38
|
+
The command fails immediately after accepting the file write permission...
|
|
39
|
+
validations:
|
|
40
|
+
required: true
|
|
41
|
+
|
|
42
|
+
- type: textarea
|
|
43
|
+
id: expected
|
|
44
|
+
attributes:
|
|
45
|
+
label: What Should Happen?
|
|
46
|
+
description: Describe the expected behavior
|
|
47
|
+
placeholder: Recoder should create a Python script file successfully without errors
|
|
48
|
+
validations:
|
|
49
|
+
required: true
|
|
50
|
+
|
|
51
|
+
- type: textarea
|
|
52
|
+
id: error_output
|
|
53
|
+
attributes:
|
|
54
|
+
label: Error Messages/Logs
|
|
55
|
+
description: If you see any error messages, paste them here
|
|
56
|
+
placeholder: |
|
|
57
|
+
Paste any error output, stack traces, or relevant logs here.
|
|
58
|
+
This will be automatically formatted as code.
|
|
59
|
+
render: shell
|
|
60
|
+
validations:
|
|
61
|
+
required: false
|
|
62
|
+
|
|
63
|
+
- type: textarea
|
|
64
|
+
id: reproduction
|
|
65
|
+
attributes:
|
|
66
|
+
label: Steps to Reproduce
|
|
67
|
+
description: |
|
|
68
|
+
Please provide clear, numbered steps that anyone can follow to reproduce the issue.
|
|
69
|
+
**Important**: Include any necessary code, file contents, or context needed to reproduce the bug.
|
|
70
|
+
If the issue involves specific files or code, please create a minimal example.
|
|
71
|
+
placeholder: |
|
|
72
|
+
1. Create a file `test.py` with this content:
|
|
73
|
+
```python
|
|
74
|
+
def hello():
|
|
75
|
+
print("test")
|
|
76
|
+
```
|
|
77
|
+
2. Run `claude "add type hints to test.py"`
|
|
78
|
+
3. When prompted for file access, accept
|
|
79
|
+
4. Error appears: "Unable to parse..."
|
|
80
|
+
|
|
81
|
+
Note: The bug only happens with Python files containing...
|
|
82
|
+
validations:
|
|
83
|
+
required: true
|
|
84
|
+
|
|
85
|
+
- type: dropdown
|
|
86
|
+
id: model
|
|
87
|
+
attributes:
|
|
88
|
+
label: Recoder Model
|
|
89
|
+
description: Which model were you using? (Run `/model` to check)
|
|
90
|
+
options:
|
|
91
|
+
- Sonnet (default)
|
|
92
|
+
- Opus
|
|
93
|
+
- Not sure / Multiple models
|
|
94
|
+
- Other
|
|
95
|
+
validations:
|
|
96
|
+
required: false
|
|
97
|
+
|
|
98
|
+
- type: dropdown
|
|
99
|
+
id: regression
|
|
100
|
+
attributes:
|
|
101
|
+
label: Is this a regression?
|
|
102
|
+
description: Did this work in a previous version?
|
|
103
|
+
options:
|
|
104
|
+
- "Yes, this worked in a previous version"
|
|
105
|
+
- "No, this never worked"
|
|
106
|
+
- "I don't know"
|
|
107
|
+
validations:
|
|
108
|
+
required: true
|
|
109
|
+
|
|
110
|
+
- type: input
|
|
111
|
+
id: working_version
|
|
112
|
+
attributes:
|
|
113
|
+
label: Last Working Version
|
|
114
|
+
description: If this is a regression, which version last worked? This helps expedite a fix.
|
|
115
|
+
placeholder: "e.g., 1.0.100"
|
|
116
|
+
validations:
|
|
117
|
+
required: false
|
|
118
|
+
|
|
119
|
+
- type: input
|
|
120
|
+
id: version
|
|
121
|
+
attributes:
|
|
122
|
+
label: Recoder Code Version
|
|
123
|
+
description: Run `claude --version` and paste the output
|
|
124
|
+
placeholder: "e.g., 1.0.123 (Recoder Code)"
|
|
125
|
+
validations:
|
|
126
|
+
required: true
|
|
127
|
+
|
|
128
|
+
- type: dropdown
|
|
129
|
+
id: platform
|
|
130
|
+
attributes:
|
|
131
|
+
label: Platform
|
|
132
|
+
description: Which API platform are you using?
|
|
133
|
+
options:
|
|
134
|
+
- Anthropic API
|
|
135
|
+
- AWS Bedrock
|
|
136
|
+
- Google Vertex AI
|
|
137
|
+
- Other
|
|
138
|
+
validations:
|
|
139
|
+
required: true
|
|
140
|
+
|
|
141
|
+
- type: dropdown
|
|
142
|
+
id: os
|
|
143
|
+
attributes:
|
|
144
|
+
label: Operating System
|
|
145
|
+
options:
|
|
146
|
+
- macOS
|
|
147
|
+
- Windows
|
|
148
|
+
- Ubuntu/Debian Linux
|
|
149
|
+
- Other Linux
|
|
150
|
+
- Other
|
|
151
|
+
validations:
|
|
152
|
+
required: true
|
|
153
|
+
|
|
154
|
+
- type: dropdown
|
|
155
|
+
id: terminal
|
|
156
|
+
attributes:
|
|
157
|
+
label: Terminal/Shell
|
|
158
|
+
description: Which terminal are you using?
|
|
159
|
+
options:
|
|
160
|
+
- Terminal.app (macOS)
|
|
161
|
+
- Warp
|
|
162
|
+
- Cursor
|
|
163
|
+
- iTerm2
|
|
164
|
+
- IntelliJ IDEA terminal
|
|
165
|
+
- VS Code integrated terminal
|
|
166
|
+
- PyCharm terminal
|
|
167
|
+
- Windows Terminal
|
|
168
|
+
- PowerShell
|
|
169
|
+
- WSL (Windows Subsystem for Linux)
|
|
170
|
+
- Xterm
|
|
171
|
+
- Non-interactive/CI environment
|
|
172
|
+
- Other
|
|
173
|
+
validations:
|
|
174
|
+
required: true
|
|
175
|
+
|
|
176
|
+
- type: textarea
|
|
177
|
+
id: additional
|
|
178
|
+
attributes:
|
|
179
|
+
label: Additional Information
|
|
180
|
+
description: |
|
|
181
|
+
Anything else that might help us understand the issue?
|
|
182
|
+
- Screenshots (drag and drop images here)
|
|
183
|
+
- Configuration files
|
|
184
|
+
- Related files or code
|
|
185
|
+
- Links to repositories demonstrating the issue
|
|
186
|
+
placeholder: Any additional context, screenshots, or information...
|
|
187
|
+
validations:
|
|
188
|
+
required: false
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
blank_issues_enabled: false
|
|
2
|
+
contact_links:
|
|
3
|
+
- name: 💬 Discord Community
|
|
4
|
+
url: https://anthropic.com/discord
|
|
5
|
+
about: Get help, ask questions, and chat with other Recoder Code users
|
|
6
|
+
- name: 📖 Documentation
|
|
7
|
+
url: https://docs.anthropic.com/en/docs/claude-code
|
|
8
|
+
about: Read the official documentation and guides
|
|
9
|
+
- name: 🎓 Getting Started Guide
|
|
10
|
+
url: https://docs.anthropic.com/en/docs/claude-code/getting-started
|
|
11
|
+
about: New to Recoder Code? Start here
|
|
12
|
+
- name: 🔧 Troubleshooting Guide
|
|
13
|
+
url: https://docs.anthropic.com/en/docs/claude-code/troubleshooting
|
|
14
|
+
about: Common issues and how to fix them
|
|
15
|
+
- name: 💡 Discussions
|
|
16
|
+
url: https://github.com/anthropics/claude-code/discussions
|
|
17
|
+
about: Share ideas, tips, and chat with maintainers
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
name: 📚 Documentation Issue
|
|
2
|
+
description: Report missing, unclear, or incorrect documentation
|
|
3
|
+
title: "[DOCS] "
|
|
4
|
+
labels:
|
|
5
|
+
- documentation
|
|
6
|
+
body:
|
|
7
|
+
- type: markdown
|
|
8
|
+
attributes:
|
|
9
|
+
value: |
|
|
10
|
+
## Help us improve our documentation!
|
|
11
|
+
|
|
12
|
+
Good documentation is crucial for a great developer experience. Please let us know what's missing or confusing.
|
|
13
|
+
|
|
14
|
+
- type: dropdown
|
|
15
|
+
id: doc_type
|
|
16
|
+
attributes:
|
|
17
|
+
label: Documentation Type
|
|
18
|
+
description: What kind of documentation issue is this?
|
|
19
|
+
options:
|
|
20
|
+
- Missing documentation (feature not documented)
|
|
21
|
+
- Unclear/confusing documentation
|
|
22
|
+
- Incorrect/outdated documentation
|
|
23
|
+
- Typo or formatting issue
|
|
24
|
+
- Missing code examples
|
|
25
|
+
- Broken links
|
|
26
|
+
- Other
|
|
27
|
+
validations:
|
|
28
|
+
required: true
|
|
29
|
+
|
|
30
|
+
- type: input
|
|
31
|
+
id: location
|
|
32
|
+
attributes:
|
|
33
|
+
label: Documentation Location
|
|
34
|
+
description: Where did you encounter this issue? Provide a URL if possible
|
|
35
|
+
placeholder: "e.g., https://docs.anthropic.com/en/docs/claude-code/getting-started"
|
|
36
|
+
validations:
|
|
37
|
+
required: false
|
|
38
|
+
|
|
39
|
+
- type: input
|
|
40
|
+
id: section
|
|
41
|
+
attributes:
|
|
42
|
+
label: Section/Topic
|
|
43
|
+
description: Which specific section or topic needs improvement?
|
|
44
|
+
placeholder: "e.g., MCP Server Configuration section"
|
|
45
|
+
validations:
|
|
46
|
+
required: true
|
|
47
|
+
|
|
48
|
+
- type: textarea
|
|
49
|
+
id: current
|
|
50
|
+
attributes:
|
|
51
|
+
label: Current Documentation
|
|
52
|
+
description: |
|
|
53
|
+
What does the documentation currently say?
|
|
54
|
+
Quote the specific text if applicable.
|
|
55
|
+
placeholder: |
|
|
56
|
+
The docs currently say:
|
|
57
|
+
"To configure MCP servers, add them to your configuration..."
|
|
58
|
+
|
|
59
|
+
But it doesn't explain...
|
|
60
|
+
validations:
|
|
61
|
+
required: false
|
|
62
|
+
|
|
63
|
+
- type: textarea
|
|
64
|
+
id: issue
|
|
65
|
+
attributes:
|
|
66
|
+
label: What's Wrong or Missing?
|
|
67
|
+
description: Explain what's incorrect, unclear, or missing
|
|
68
|
+
placeholder: |
|
|
69
|
+
The documentation doesn't explain how to:
|
|
70
|
+
- Configure multiple MCP servers
|
|
71
|
+
- Handle authentication
|
|
72
|
+
- Debug connection issues
|
|
73
|
+
|
|
74
|
+
The example code doesn't work because...
|
|
75
|
+
validations:
|
|
76
|
+
required: true
|
|
77
|
+
|
|
78
|
+
- type: textarea
|
|
79
|
+
id: suggested
|
|
80
|
+
attributes:
|
|
81
|
+
label: Suggested Improvement
|
|
82
|
+
description: How should the documentation be improved? Provide suggested text if possible
|
|
83
|
+
placeholder: |
|
|
84
|
+
The documentation should include:
|
|
85
|
+
|
|
86
|
+
1. A complete example showing...
|
|
87
|
+
2. Explanation of common errors like...
|
|
88
|
+
3. Step-by-step guide for...
|
|
89
|
+
|
|
90
|
+
Suggested text:
|
|
91
|
+
"To configure multiple MCP servers, create an array in your settings..."
|
|
92
|
+
validations:
|
|
93
|
+
required: true
|
|
94
|
+
|
|
95
|
+
- type: dropdown
|
|
96
|
+
id: impact
|
|
97
|
+
attributes:
|
|
98
|
+
label: Impact
|
|
99
|
+
description: How much does this documentation issue affect users?
|
|
100
|
+
options:
|
|
101
|
+
- High - Prevents users from using a feature
|
|
102
|
+
- Medium - Makes feature difficult to understand
|
|
103
|
+
- Low - Minor confusion or inconvenience
|
|
104
|
+
validations:
|
|
105
|
+
required: true
|
|
106
|
+
|
|
107
|
+
- type: textarea
|
|
108
|
+
id: additional
|
|
109
|
+
attributes:
|
|
110
|
+
label: Additional Context
|
|
111
|
+
description: |
|
|
112
|
+
- Screenshots showing the issue
|
|
113
|
+
- Links to related documentation
|
|
114
|
+
- Examples from other projects that do this well
|
|
115
|
+
placeholder: Any additional information that would help...
|
|
116
|
+
validations:
|
|
117
|
+
required: false
|