Repository: exercism/exercism
Branch: main
Commit: 39ec70db5085
Files: 8
Total size: 24.0 KB
Directory structure:
gitextract_ly67nmiv/
├── .appends/
│ └── .github/
│ └── labels.yml
├── .github/
│ ├── labels.yml
│ └── workflows/
│ ├── first-time-issue.yml
│ ├── stop-hacktoberfest-spam.yml
│ └── sync-labels.yml
├── CODE_OF_CONDUCT.md
├── README.md
└── links.md
================================================
FILE CONTENTS
================================================
================================================
FILE: .appends/.github/labels.yml
================================================
# ----------------------------------------------------------------------------------------- #
# These are the repository-specific labels that augment the Exercise-wide labels defined in #
# https://github.com/exercism/org-wide-files/blob/main/global-files/.github/labels.yml. #
# ----------------------------------------------------------------------------------------- #
- name: "area/abuse-vector"
description: ""
color: "4371b1"
- name: "area/api"
description: ""
color: "4371b1"
- name: "area/automation"
description: ""
color: "4371b1"
- name: "area/cli"
description: ""
color: "4371b1"
- name: "area/copy"
description: ""
color: "4371b1"
- name: "area/documentation"
description: ""
color: "4371b1"
- name: "area/exercises"
description: ""
color: "4371b1"
- name: "area/markdown"
description: ""
color: "4371b1"
- name: "area/mentor-tools"
description: ""
color: "4371b1"
- name: "area/notifications"
description: ""
color: "4371b1"
- name: "area/product"
description: ""
color: "4371b1"
- name: "area/teams"
description: ""
color: "4371b1"
- name: "area/track-maintenance"
description: ""
color: "4371b1"
- name: "area/walkthrough"
description: ""
color: "4371b1"
- name: "area/backend"
description: ""
color: "4371b1"
- name: "area/visual"
description: ""
color: "4371b1"
- name: "area/frontend"
description: ""
color: "4371b1"
- name: "Hacktoberfest"
description: ""
color: "ff7518"
- name: "invalid"
description: ""
color: "cccccc"
- name: "priority/high"
description: ""
color: "4DAA57"
- name: "priority/low"
description: ""
color: "B9DFBD"
- name: "priority/medium"
description: ""
color: "81C588"
- name: "priority/next-up"
description: ""
color: "337039"
- name: "rgsoc-2018"
description: ""
color: "ffffff"
- name: "status/blocked"
description: ""
color: "F8EBC9"
- name: "status/discussion"
description: ""
color: "F8EBC9"
- name: "status/fixed"
description: ""
color: "F8EBC9"
- name: "status/in-progress"
description: ""
color: "F8EBC9"
- name: "status/needs-triaging"
description: ""
color: "F8EBC9"
- name: "status/on-roadmap"
description: ""
color: "F8EBC9"
- name: "status/pr-submitted"
description: ""
color: "F8EBC9"
- name: "status/product-discussion"
description: ""
color: "F8EBC9"
- name: "status/stale"
description: "If marked as stale, issue will be closed after 7 days unless new information is provided."
color: "F8EBC9"
- name: "status/triaged-to-repo"
description: ""
color: "F8EBC9"
- name: "status/waiting-for-info"
description: ""
color: "F8EBC9"
- name: "todo/define-next-step"
description: ""
color: "B5C8E3"
- name: "todo/elaborate"
description: ""
color: "B5C8E3"
- name: "todo/move-to-correct-repo"
description: ""
color: "B5C8E3"
- name: "todo/please-summarize"
description: ""
color: "B5C8E3"
- name: "todo/rescue-me"
description: ""
color: "B5C8E3"
- name: "type/accessibility"
description: ""
color: "1d3155"
- name: "type/announcement"
description: ""
color: "1d3155"
- name: "type/bug"
description: ""
color: "1d3155"
- name: "type/community-consultation"
description: ""
color: "1d3155"
- name: "type/duplicate"
description: ""
color: "1d3155"
- name: "type/feature"
description: ""
color: "1d3155"
- name: "type/improvement"
description: ""
color: "1d3155"
- name: "type/janitorial"
description: ""
color: "1d3155"
- name: "type/mentoring-support"
description: ""
color: "1d3155"
- name: "type/operations"
description: ""
color: "1d3155"
- name: "type/policy"
description: ""
color: "1d3155"
- name: "type/question"
description: ""
color: "1d3155"
- name: "type/spam"
description: ""
color: "1d3155"
- name: "type/support"
description: ""
color: "1d3155"
- name: "type/wontfix"
description: ""
color: "1d3155"
================================================
FILE: .github/labels.yml
================================================
# --------------------------------------------------------------- #
# This is an auto-generated file - Do not manually edit this file #
# --------------------------------------------------------------- #
# This file is automatically generated by concatenating two files:
#
# 1. The Exercism-wide labels: defined in https://github.com/exercism/org-wide-files/blob/main/global-files/.github/labels.yml
# 2. The repository-specific labels: defined in the `.appends/.github/labels.yml` file within this repository.
#
# If any of these two files change, a pull request is automatically created containing a re-generated version of this file.
# Consequently, to change repository-specific labels you should update the `.appends/.github/labels.yml` file and _not_ this file.
#
# When the pull request has been merged, the GitHub labels will be automatically updated by the "Sync labels" workflow.
# This typically takes 5-10 minutes.
# --------------------------------------------------------------------- #
# These are the Exercism-wide labels which are shared across all repos. #
# --------------------------------------------------------------------- #
# The following Exercism-wide labels are used to show "tasks" on the website, which will point users to things they can contribute to.
# The `x:action/<value>` labels describe what sort of work the contributor will be engaged in when working on the issue
- name: "x:action/create"
description: "Work on something from scratch"
color: "ffffff"
- name: "x:action/fix"
description: "Fix an issue"
color: "ffffff"
- name: "x:action/improve"
description: "Improve existing functionality/content"
color: "ffffff"
- name: "x:action/proofread"
description: "Proofread text"
color: "ffffff"
- name: "x:action/sync"
description: "Sync content with its latest version"
color: "ffffff"
# The `x:knowledge/<value>` labels describe how much Exercism knowledge is required by the contributor
- name: "x:knowledge/none"
description: "No existing Exercism knowledge required"
color: "ffffff"
- name: "x:knowledge/elementary"
description: "Little Exercism knowledge required"
color: "ffffff"
- name: "x:knowledge/intermediate"
description: "Quite a bit of Exercism knowledge required"
color: "ffffff"
- name: "x:knowledge/advanced"
description: "Comprehensive Exercism knowledge required"
color: "ffffff"
# The `x:module/<value>` labels indicate what part of Exercism the contributor will be working on
- name: "x:module/analyzer"
description: "Work on Analyzers"
color: "ffffff"
- name: "x:module/concept"
description: "Work on Concepts"
color: "ffffff"
- name: "x:module/concept-exercise"
description: "Work on Concept Exercises"
color: "ffffff"
- name: "x:module/generator"
description: "Work on Exercise generators"
color: "ffffff"
- name: "x:module/practice-exercise"
description: "Work on Practice Exercises"
color: "ffffff"
- name: "x:module/representer"
description: "Work on Representers"
color: "ffffff"
- name: "x:module/test-runner"
description: "Work on Test Runners"
color: "ffffff"
# The `x:rep/<value>` labels describe the amount of reputation to award
#
# For more information on reputation and how these labels should be used,
# check out https://exercism.org/docs/using/product/reputation
- name: "x:rep/tiny"
description: "Tiny amount of reputation"
color: "ffffff"
- name: "x:rep/small"
description: "Small amount of reputation"
color: "ffffff"
- name: "x:rep/medium"
description: "Medium amount of reputation"
color: "ffffff"
- name: "x:rep/large"
description: "Large amount of reputation"
color: "ffffff"
- name: "x:rep/massive"
description: "Massive amount of reputation"
color: "ffffff"
# The `x:size/<value>` labels describe the expected amount of work for a contributor
- name: "x:size/tiny"
description: "Tiny amount of work"
color: "ffffff"
- name: "x:size/small"
description: "Small amount of work"
color: "ffffff"
- name: "x:size/medium"
description: "Medium amount of work"
color: "ffffff"
- name: "x:size/large"
description: "Large amount of work"
color: "ffffff"
- name: "x:size/massive"
description: "Massive amount of work"
color: "ffffff"
# The `x:status/<value>` label indicates if there is already someone working on the issue
- name: "x:status/claimed"
description: "Someone is working on this issue"
color: "ffffff"
# The `x:type/<value>` labels describe what type of work the contributor will be engaged in
- name: "x:type/ci"
description: "Work on Continuous Integration (e.g. GitHub Actions workflows)"
color: "ffffff"
- name: "x:type/coding"
description: "Write code that is not student-facing content (e.g. test-runners, generators, but not exercises)"
color: "ffffff"
- name: "x:type/content"
description: "Work on content (e.g. exercises, concepts)"
color: "ffffff"
- name: "x:type/docker"
description: "Work on Dockerfiles"
color: "ffffff"
- name: "x:type/docs"
description: "Work on Documentation"
color: "ffffff"
# This Exercism-wide label is added to all automatically created pull requests that help migrate/prepare a track for Exercism v3
- name: "v3-migration 🤖"
description: "Preparing for Exercism v3"
color: "e99695"
# This Exercism-wide label can be used to bulk-close issues in preparation for pausing community contributions
- name: "paused"
description: "Work paused until further notice"
color: "e4e669"
# ----------------------------------------------------------------------------------------- #
# These are the repository-specific labels that augment the Exercise-wide labels defined in #
# https://github.com/exercism/org-wide-files/blob/main/global-files/.github/labels.yml. #
# ----------------------------------------------------------------------------------------- #
- name: "area/abuse-vector"
description: ""
color: "4371b1"
- name: "area/api"
description: ""
color: "4371b1"
- name: "area/automation"
description: ""
color: "4371b1"
- name: "area/cli"
description: ""
color: "4371b1"
- name: "area/copy"
description: ""
color: "4371b1"
- name: "area/documentation"
description: ""
color: "4371b1"
- name: "area/exercises"
description: ""
color: "4371b1"
- name: "area/markdown"
description: ""
color: "4371b1"
- name: "area/mentor-tools"
description: ""
color: "4371b1"
- name: "area/notifications"
description: ""
color: "4371b1"
- name: "area/product"
description: ""
color: "4371b1"
- name: "area/teams"
description: ""
color: "4371b1"
- name: "area/track-maintenance"
description: ""
color: "4371b1"
- name: "area/walkthrough"
description: ""
color: "4371b1"
- name: "area/backend"
description: ""
color: "4371b1"
- name: "area/visual"
description: ""
color: "4371b1"
- name: "area/frontend"
description: ""
color: "4371b1"
- name: "Hacktoberfest"
description: ""
color: "ff7518"
- name: "invalid"
description: ""
color: "cccccc"
- name: "priority/high"
description: ""
color: "4DAA57"
- name: "priority/low"
description: ""
color: "B9DFBD"
- name: "priority/medium"
description: ""
color: "81C588"
- name: "priority/next-up"
description: ""
color: "337039"
- name: "rgsoc-2018"
description: ""
color: "ffffff"
- name: "status/blocked"
description: ""
color: "F8EBC9"
- name: "status/discussion"
description: ""
color: "F8EBC9"
- name: "status/fixed"
description: ""
color: "F8EBC9"
- name: "status/in-progress"
description: ""
color: "F8EBC9"
- name: "status/needs-triaging"
description: ""
color: "F8EBC9"
- name: "status/on-roadmap"
description: ""
color: "F8EBC9"
- name: "status/pr-submitted"
description: ""
color: "F8EBC9"
- name: "status/product-discussion"
description: ""
color: "F8EBC9"
- name: "status/stale"
description: "If marked as stale, issue will be closed after 7 days unless new information is provided."
color: "F8EBC9"
- name: "status/triaged-to-repo"
description: ""
color: "F8EBC9"
- name: "status/waiting-for-info"
description: ""
color: "F8EBC9"
- name: "todo/define-next-step"
description: ""
color: "B5C8E3"
- name: "todo/elaborate"
description: ""
color: "B5C8E3"
- name: "todo/move-to-correct-repo"
description: ""
color: "B5C8E3"
- name: "todo/please-summarize"
description: ""
color: "B5C8E3"
- name: "todo/rescue-me"
description: ""
color: "B5C8E3"
- name: "type/accessibility"
description: ""
color: "1d3155"
- name: "type/announcement"
description: ""
color: "1d3155"
- name: "type/bug"
description: ""
color: "1d3155"
- name: "type/community-consultation"
description: ""
color: "1d3155"
- name: "type/duplicate"
description: ""
color: "1d3155"
- name: "type/feature"
description: ""
color: "1d3155"
- name: "type/improvement"
description: ""
color: "1d3155"
- name: "type/janitorial"
description: ""
color: "1d3155"
- name: "type/mentoring-support"
description: ""
color: "1d3155"
- name: "type/operations"
description: ""
color: "1d3155"
- name: "type/policy"
description: ""
color: "1d3155"
- name: "type/question"
description: ""
color: "1d3155"
- name: "type/spam"
description: ""
color: "1d3155"
- name: "type/support"
description: ""
color: "1d3155"
- name: "type/wontfix"
description: ""
color: "1d3155"
================================================
FILE: .github/workflows/first-time-issue.yml
================================================
name: First Time Issues
on:
issues:
types: [opened]
jobs:
first-time-greeting:
runs-on: ubuntu-latest
steps:
- name: Check if it's a new contributor
# Based on https://github.com/actions/github-script#welcome-a-first-time-contributor
id: new-contributor
uses: actions/github-script@626af12fe9a53dc2972b48385e7fe7dec79145c9 # 3.0.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
result-encoding: string
script: |
const creator = context.payload.sender.login
const opts = github.issues.listForRepo.endpoint.merge({
...context.issue,
creator,
state: 'all'
})
const issues = await github.paginate(opts)
return issues.length === 1
- name: Post friendly comment
if: steps.new-contributor.outputs.result == 'true'
uses: actions/github-script@626af12fe9a53dc2972b48385e7fe7dec79145c9 # 3.0.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: "Hi and welcome to Exercism! 👋\n\nThis GitHub repository is no longer used for providing support or logging issues. **Please open all issues in our [community forum](https://forum.exercism.org/):**\n- Get help in [Exercism Support](https://forum.exercism.org/c/support/8).\n- Report bugs or suggest improvements in [Bugs & Feature Requests](https://forum.exercism.org/c/exercism/bugs-and-features/126).\n\nIf you are suggesting a new feature or an improvement to Exercism, we also suggest taking a read of [this post](https://github.com/exercism/docs/blob/main/community/good-member/chestertons-fence.md) first.\n\nUnless this issue has been pre-approved (or you are part of the Exercism Team) it will likely be closed without a response. See you in the forum!\n"
})
================================================
FILE: .github/workflows/stop-hacktoberfest-spam.yml
================================================
name: Stop Hacktoberfest Spam
on:
pull_request_target:
jobs:
stop-spam:
runs-on: ubuntu-latest
steps:
- name: Check if it's a new contributor
# Based on https://github.com/actions/github-script#welcome-a-first-time-contributor
id: new-contributor
uses: actions/github-script@626af12fe9a53dc2972b48385e7fe7dec79145c9 # 3.0.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
result-encoding: string
script: |
const creator = context.payload.sender.login
const opts = github.issues.listForRepo.endpoint.merge({
...context.issue,
creator,
state: 'all'
})
const issues = await github.paginate(opts)
for (const issue of issues) {
if (issue.number === context.issue.number) {
continue
}
if (issue.pull_request) {
return false // Creator is already a contributor.
}
}
return true
- name: Post friendly comment
if: steps.new-contributor.outputs.result == 'true'
uses: actions/github-script@626af12fe9a53dc2972b48385e7fe7dec79145c9 # 3.0.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: 'Hi and welcome to Exercism! :wave:\n\nPlease be aware that this repo does generally not accept Pull Requests unless they have been pre-agreed as per our [Contributing Guide](https://github.com/exercism/website/blob/master/CONTRIBUTING.md). Therefore this PR will automatically be closed.\n\nIf you want to contribute to Exercism as part of Hacktoberfest, please take a look at our [Hacktoberfest 2020 - start here!](https://github.com/exercism/exercism/issues/5386) guide.'
})
- name: Label as invalid
if: steps.new-contributor.outputs.result == 'true'
uses: actions/github-script@626af12fe9a53dc2972b48385e7fe7dec79145c9 # 3.0.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
github.issues.addLabels({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: ['invalid']
})
- name: Close PR
if: steps.new-contributor.outputs.result == 'true'
uses: actions/github-script@626af12fe9a53dc2972b48385e7fe7dec79145c9 # 3.0.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
github.pulls.update({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number,
state: 'closed'
})
================================================
FILE: .github/workflows/sync-labels.yml
================================================
name: Tools
on:
push:
branches:
- main
paths:
- .github/labels.yml
- .github/workflows/sync-labels.yml
workflow_dispatch:
schedule:
- cron: 0 0 1 * * # First day of each month
permissions:
issues: write
jobs:
sync-labels:
uses: exercism/github-actions/.github/workflows/labels.yml@main
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Code of Conduct
## Introduction
Exercism is a platform centered around empathetic conversation.
We have a low tolerance for communication that makes anyone feel unwelcome, unsupported, insulted or discriminated against.
## Seen or experienced something uncomfortable?
If you see or experience abuse, harassment, discrimination, or feel unsafe or upset, please email [abuse@exercism.org](mailto:abuse@exercism.org?subject=%5BCoC%5D) and include \[CoC\] in the subject line.
We will follow up with you as a priority.
## Enforcement
We actively monitor for Code of Conduct (CoC) violations and take any reports of violations extremely seriously.
We have banned contributors, mentors and users due to violations.
After we receive a report of a CoC violation, we view that person's conversation history on Exercism and related communication channels and attempt to understand whether someone has deliberately broken the CoC, or accidentally crossed a line.
We generally reach out to the person who has been reported to discuss any concerns we have and warn them that repeated violations will result in a ban.
Sometimes we decide that no violation has occurred and that no action is required and sometimes we will also ban people on a first offense.
We strive to be fair, but will err on the side of protecting the culture of our community.
Exercism's leadership reserve the right to take whatever action they feel appropriate with regards to CoC violations.
## The simple version
- Be empathetic
- Be welcoming
- Be kind
- Be honest
- Be supportive
- Be polite
## The details
Exercism should be a safe place for everybody regardless of
- Gender, gender identity or gender expression
- Sexual orientation
- Disability
- Physical appearance (including but not limited to body size)
- Race
- Age
- Religion
- Anything else you can think of
As someone who is part of this community, you agree that:
- We are collectively and individually committed to safety and inclusivity
- We have zero tolerance for abuse, harassment, or discrimination
- We respect people’s boundaries and identities
- We refrain from using language that can be considered offensive or oppressive (systemically or otherwise), eg. sexist, racist, homophobic, transphobic, ableist, classist, etc.
- this includes (but is not limited to) various slurs.
- We avoid using offensive topics as a form of humor
We actively work towards:
- Being a safe community
- Cultivating a network of support & encouragement for each other
- Encouraging responsible and varied forms of expression
We condemn:
- Stalking, doxxing, or publishing private information
- Violence, threats of violence or violent language
- Anything that compromises people’s safety
- Conduct or speech which might be considered sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory or offensive in nature
- The use of unwelcome, suggestive, derogatory or inappropriate nicknames or terms
- Disrespect towards others (jokes, innuendo, dismissive attitudes) and towards differences of opinion
- Intimidation or harassment (online or in-person).
Please read the [Citizen Code of Conduct](https://github.com/stumpsyn/policies/blob/master/citizen_code_of_conduct.md) for how we interpret harassment
- Inappropriate attention or contact
- Not understanding the differences between constructive criticism and disparagement
These things are NOT OK.
Be aware of how your actions affect others.
If it makes someone uncomfortable, stop.
If you say something that is found offensive, and you are called out on it, try to:
- Listen without interruption
- Believe what the person is saying & do not attempt to disqualify what they have to say
- Ask for tips / help with avoiding making the offense in the future
- Apologize and ask forgiveness
## History
This policy was initially adopted from the Front-end London Slack community and has been modified since.
A version history can be seen on [GitHub](https://github.com/exercism/website-copy/edit/main/pages/code_of_conduct.md).
_This policy is a "living" document, and subject to refinement and expansion in the future.
This policy applies to the Exercism website, the Exercism GitHub organization, any other Exercism-related communication channels (e.g. Discord, Forum, Twitter, email) and any other Exercism entity or event._
================================================
FILE: README.md
================================================
**For support, please post in the new [Exercism forum](https://forum.exercism.org/c/support/8). New posts here will be closed.**
---
# Welcome to Exercism
## Where to open issues
For the time being we are triaging all issues [from our forum](https://forum.exercism.org). Please start a new topic there for your issue (presuming there isn't one already). Issues opened here will be automatically closed and you will receive a message redirecting you to the forum.
## Feeling uncomfortable?
If you need to report a code of conduct violation, please email us at [abuse@exercism.org](mailto:abuse@exercism.org?subject=%5BCoC%5D) and include \[CoC\] in the subject line. We will follow up with you as a priority.
## Where to find the code
The code for the website lives in [exercism/website](http://github.com/exercism/website).
The code for the old website is in this repository, in the [v1.exercism.io](https://github.com/exercism/exercism/tree/v1.exercism.io) branch.
## Who's behind Exercism?
Read about our Team on the site: https://exercism.org/team
================================================
FILE: links.md
================================================
# Links to Exercism
These are all the places that link to Exercism, split by which version of Exercism they target.
## Updated for V3
_Coming soon!_
## Updated for V2
## Still on V1
- https://github.com/FrancesCoronel/hire-me/tree/master/docs/01-prepare#exercism
## Places we should be
These are places we should be but are not:
- https://github.com/Olshansk/interview#coding-practice
gitextract_ly67nmiv/ ├── .appends/ │ └── .github/ │ └── labels.yml ├── .github/ │ ├── labels.yml │ └── workflows/ │ ├── first-time-issue.yml │ ├── stop-hacktoberfest-spam.yml │ └── sync-labels.yml ├── CODE_OF_CONDUCT.md ├── README.md └── links.md
Condensed preview — 8 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (27K chars).
[
{
"path": ".appends/.github/labels.yml",
"chars": 3940,
"preview": "# ----------------------------------------------------------------------------------------- #\n# These are the repository"
},
{
"path": ".github/labels.yml",
"chars": 9412,
"preview": "# --------------------------------------------------------------- #\n# This is an auto-generated file - Do not manually e"
},
{
"path": ".github/workflows/first-time-issue.yml",
"chars": 2055,
"preview": "name: First Time Issues\n\non:\n issues:\n types: [opened]\n\njobs:\n first-time-greeting:\n runs-on: ubuntu-latest\n\n "
},
{
"path": ".github/workflows/stop-hacktoberfest-spam.yml",
"chars": 3008,
"preview": "name: Stop Hacktoberfest Spam\n\non:\n pull_request_target:\n\njobs:\n stop-spam:\n runs-on: ubuntu-latest\n\n steps:\n "
},
{
"path": ".github/workflows/sync-labels.yml",
"chars": 333,
"preview": "name: Tools\n\non:\n push:\n branches:\n - main\n paths:\n - .github/labels.yml\n - .github/workflows/sync"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 4341,
"preview": "# Code of Conduct\n\n## Introduction\n\nExercism is a platform centered around empathetic conversation.\nWe have a low tolera"
},
{
"path": "README.md",
"chars": 1061,
"preview": "**For support, please post in the new [Exercism forum](https://forum.exercism.org/c/support/8). New posts here will be c"
},
{
"path": "links.md",
"chars": 394,
"preview": "# Links to Exercism\n\nThese are all the places that link to Exercism, split by which version of Exercism they target.\n\n##"
}
]
About this extraction
This page contains the full source code of the exercism/exercism GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 8 files (24.0 KB), approximately 6.7k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.