Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions .devcontainer/aws-terraform/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "AWS + Terraform",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"postCreateCommand": "make init",
"postCreateCommand": "mkdir -p .specstory/history && make init",
"workspaceFolder": "/workspaces/interviews/aws-terraform",
"features": {
"ghcr.io/devcontainers/features/aws-cli:1": {},
Expand All @@ -20,12 +20,14 @@
"workbench.startupEditor": "readme",
"git.openRepositoryInParentFolders": "never",
"git.autofetch": true,
"chat.disableAIFeatures": true
"specstory.autoSave": true
},
"extensions": [
"ms-vsliveshare.vsliveshare",
"hashicorp.terraform",
"-github.copilot-chat"
"GitHub.copilot",
"GitHub.copilot-chat",
"specstory.specstory"
]
}
}
Expand Down
8 changes: 5 additions & 3 deletions .devcontainer/c-sharp/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "C-Sharp",
"image": "mcr.microsoft.com/devcontainers/dotnet:9.0",
"postCreateCommand": "make init",
"postCreateCommand": "mkdir -p .specstory/history && make init",
"workspaceFolder": "/workspaces/interviews/c-sharp",
"customizations": {
"vscode": {
Expand All @@ -14,13 +14,15 @@
"workbench.startupEditor": "readme",
"git.openRepositoryInParentFolders": "never",
"git.autofetch": true,
"chat.disableAIFeatures": true
"specstory.autoSave": true
},
"extensions": [
"ms-vsliveshare.vsliveshare",
"ms-dotnettools.csharp",
"ms-dotnettools.csdevkit",
"-github.copilot-chat"
"GitHub.copilot",
"GitHub.copilot-chat",
"specstory.specstory"
]
}
}
Expand Down
7 changes: 5 additions & 2 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "Default",
"image": "mcr.microsoft.com/devcontainers/universal:5-noble",
"postCreateCommand": "mkdir -p .specstory/history",
"customizations": {
"vscode": {
"settings": {
Expand All @@ -13,11 +14,13 @@
"redhat.telemetry.enabled": false,
"git.openRepositoryInParentFolders": "never",
"git.autofetch": true,
"chat.disableAIFeatures": true
"specstory.autoSave": true
},
"extensions": [
"ms-vsliveshare.vsliveshare",
"-github.copilot-chat"
"GitHub.copilot",
"GitHub.copilot-chat",
"specstory.specstory"
]
}
}
Expand Down
8 changes: 5 additions & 3 deletions .devcontainer/f-sharp/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "F-Sharp",
"image": "mcr.microsoft.com/devcontainers/dotnet:9.0",
"postCreateCommand": "make init",
"postCreateCommand": "mkdir -p .specstory/history && make init",
"workspaceFolder": "/workspaces/interviews/f-sharp",
"customizations": {
"vscode": {
Expand All @@ -14,14 +14,16 @@
"workbench.startupEditor": "readme",
"git.openRepositoryInParentFolders": "never",
"git.autofetch": true,
"chat.disableAIFeatures": true
"specstory.autoSave": true
},
"extensions": [
"ms-vsliveshare.vsliveshare",
"ms-dotnettools.csharp",
"ms-dotnettools.csdevkit",
"ionide.ionide-fsharp",
"-github.copilot-chat"
"GitHub.copilot",
"GitHub.copilot-chat",
"specstory.specstory"
]
}
}
Expand Down
8 changes: 5 additions & 3 deletions .devcontainer/go/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "Go",
"image": "mcr.microsoft.com/devcontainers/universal:5-noble",
"postCreateCommand": "make init",
"postCreateCommand": "mkdir -p .specstory/history && make init",
"workspaceFolder": "/workspaces/interviews/go",
"customizations": {
"vscode": {
Expand All @@ -14,12 +14,14 @@
"workbench.startupEditor": "readme",
"git.openRepositoryInParentFolders": "never",
"git.autofetch": true,
"chat.disableAIFeatures": true
"specstory.autoSave": true
},
"extensions": [
"ms-vsliveshare.vsliveshare",
"golang.go",
"-github.copilot-chat"
"GitHub.copilot",
"GitHub.copilot-chat",
"specstory.specstory"
]
}
}
Expand Down
8 changes: 5 additions & 3 deletions .devcontainer/java/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"containerEnv": {
"DISABLE_JAVA_BUILD": "true"
},
"postCreateCommand": "make init",
"postCreateCommand": "mkdir -p .specstory/history && make init",
"workspaceFolder": "/workspaces/interviews/java",
"hostRequirements": {
"cpus": 4
Expand All @@ -23,15 +23,17 @@
"java.compile.nullAnalysis.mode": "automatic",
"git.openRepositoryInParentFolders": "never",
"git.autofetch": true,
"chat.disableAIFeatures": true
"specstory.autoSave": true
},
"extensions": [
"ms-vsliveshare.vsliveshare",
"vscjava.vscode-java-pack",
"vscjava.vscode-java-test",
"vscjava.vscode-gradle",
"ms-azuretools.vscode-docker",
"-github.copilot-chat"
"GitHub.copilot",
"GitHub.copilot-chat",
"specstory.specstory"
]
}
}
Expand Down
8 changes: 5 additions & 3 deletions .devcontainer/javascript/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "Javascript",
"image": "mcr.microsoft.com/devcontainers/universal:5-noble",
"postCreateCommand": "make init",
"postCreateCommand": "mkdir -p .specstory/history && make init",
"workspaceFolder": "/workspaces/interviews/javascript",
"customizations": {
"vscode": {
Expand All @@ -14,13 +14,15 @@
"workbench.startupEditor": "readme",
"git.openRepositoryInParentFolders": "never",
"git.autofetch": true,
"chat.disableAIFeatures": true
"specstory.autoSave": true
},
"extensions": [
"ms-vsliveshare.vsliveshare",
"dbaeumer.vscode-eslint",
"firsttris.vscode-jest-runner",
"-github.copilot-chat"
"GitHub.copilot",
"GitHub.copilot-chat",
"specstory.specstory"
]
}
}
Expand Down
8 changes: 5 additions & 3 deletions .devcontainer/jupyter-notebook/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "Jupyter Notebook",
"image": "mcr.microsoft.com/devcontainers/universal:5-noble",
"postCreateCommand": "make init",
"postCreateCommand": "mkdir -p .specstory/history && make init",
"workspaceFolder": "/workspaces/interviews/jupyter-notebook",
"customizations": {
"vscode": {
Expand All @@ -18,7 +18,7 @@
"workbench.startupEditor": "readme",
"git.openRepositoryInParentFolders": "never",
"git.autofetch": true,
"chat.disableAIFeatures": true
"specstory.autoSave": true
},
"extensions": [
"ms-vsliveshare.vsliveshare",
Expand All @@ -29,7 +29,9 @@
"ms-python.mypy-type-checker",
"matangover.mypy",
"ms-toolsai.jupyter",
"-github.copilot-chat"
"GitHub.copilot",
"GitHub.copilot-chat",
"specstory.specstory"
]
}
}
Expand Down
8 changes: 5 additions & 3 deletions .devcontainer/python/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "Python",
"image": "mcr.microsoft.com/devcontainers/universal:5-noble",
"postCreateCommand": "make init",
"postCreateCommand": "mkdir -p .specstory/history && make init",
"workspaceFolder": "/workspaces/interviews/python",
"customizations": {
"vscode": {
Expand All @@ -18,7 +18,7 @@
"workbench.startupEditor": "readme",
"git.openRepositoryInParentFolders": "never",
"git.autofetch": true,
"chat.disableAIFeatures": true
"specstory.autoSave": true
},
"extensions": [
"ms-vsliveshare.vsliveshare",
Expand All @@ -28,7 +28,9 @@
"ms-python.pylint",
"ms-python.mypy-type-checker",
"matangover.mypy",
"-github.copilot-chat"
"GitHub.copilot",
"GitHub.copilot-chat",
"specstory.specstory"
]
}
}
Expand Down
8 changes: 5 additions & 3 deletions .devcontainer/typescript-react/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "Typescript React",
"image": "mcr.microsoft.com/devcontainers/universal:5-noble",
"postCreateCommand": "make init",
"postCreateCommand": "mkdir -p .specstory/history && make init",
"workspaceFolder": "/workspaces/interviews/typescript-react",
"customizations": {
"vscode": {
Expand All @@ -14,13 +14,15 @@
"workbench.startupEditor": "readme",
"git.openRepositoryInParentFolders": "never",
"git.autofetch": true,
"chat.disableAIFeatures": true
"specstory.autoSave": true
},
"extensions": [
"ms-vsliveshare.vsliveshare",
"dbaeumer.vscode-eslint",
"firsttris.vscode-jest-runner",
"-github.copilot-chat"
"GitHub.copilot",
"GitHub.copilot-chat",
"specstory.specstory"
]
}
}
Expand Down
8 changes: 5 additions & 3 deletions .devcontainer/typescript/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "Typescript",
"image": "mcr.microsoft.com/devcontainers/universal:5-noble",
"postCreateCommand": "make init",
"postCreateCommand": "mkdir -p .specstory/history && make init",
"workspaceFolder": "/workspaces/interviews/typescript",
"customizations": {
"vscode": {
Expand All @@ -14,13 +14,15 @@
"workbench.startupEditor": "readme",
"git.openRepositoryInParentFolders": "never",
"git.autofetch": true,
"chat.disableAIFeatures": true
"specstory.autoSave": true
},
"extensions": [
"ms-vsliveshare.vsliveshare",
"dbaeumer.vscode-eslint",
"firsttris.vscode-jest-runner",
"-github.copilot-chat"
"GitHub.copilot",
"GitHub.copilot-chat",
"specstory.specstory"
]
}
}
Expand Down
27 changes: 27 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,10 +102,37 @@ Typically, the interviewer will start the codespace, then the interviewee will j

Every GitHub user has 120 free core hours of codespaces available per month, which will be hard to go over unless you are using codespaces outside of interviewing. You should not have to worry about being charged for usage unless you [explicitly set a spending limit](https://docs.github.com/en/billing/managing-billing-for-github-codespaces/managing-the-spending-limit-for-github-codespaces). If you would like to avoid using codespaces, you are welcome to get this repo running locally using VSCode, docker, and the remote containers extension.

## Copilot Setup

For Copilot to work, candidates need a Copilot seat assigned in **Organization Settings > Copilot > Access**.

## Session Capture

Copilot Chat interactions are automatically saved via SpecStory. Inline completions (Tab to accept) are not captured.

To extract conversations after the interview:
```bash
gh codespace cp -r 'remote:/workspaces/interviews/.specstory/' ./interviews/candidate-name/
```

If you decide to use codespaces, we would encourage you to delete your running codespace after the interview by visiting [this link](https://github.com/codespaces/). *Note:* deleting the codespace will remove all files so make sure you've finished your review prior to deleting the codespace.

As always, feel free to reach out if anything in the process is causing problems or concern.

# Troubleshooting

If something doesn't seem quite right with the codespace once it's up and running you can type `devcontainer-info` in a console to see some information about the current configuration. `devcontainer-info` should tell you the version of the image you're running, source code location, build timestamps, and a link to a [Markdown file](https://github.com/devcontainers/images/blob/main/src/universal/history/2.5.8.md) showing what versions of different tools are installed on the current image.

## Copilot Not Working

1. Verify the candidate has a Copilot seat:
```bash
gh api /orgs/sourceallies/copilot/billing/seats --jq '.seats[] | select(.assignee.login == "username")'
```
2. Check organization Copilot policies are enabled
3. Have candidate sign out/in to GitHub in the Codespace

## SpecStory Not Capturing

1. Check Extensions panel for "SpecStory"
2. Verify `.specstory/history/` exists: `ls -la .specstory/history/`