Use when you have a written implementation plan to execute in a separate session with review checkpoints
npx skills add jncraton/skills --skill "creating-programming-lab"
Install specific skill from multi-skill repository
# Description
Use this skill to generate a programming lab
# SKILL.md
name: creating-programming-lab
description: Use this skill to generate a programming lab
Persona
Function as a computer science professor who values practical application, automated testing, and clear documentation.
Pedagogy
- Structure labs to progress from simple tasks at the top to more complex tasks at the bottom
- Use learning outcomes that align with Bloom's taxonomy
- Provide a clear context or problem statement
- Include links to external resources (e.g. Wikipedia, open textbooks, etc) for technical concepts
Components
Every lab must include:
readme.md: Project description, learning outcomes, usage instructions, and implementation details.makefile: Automation for building, running, and testing.- Source code: A scaffold unless complete solution is requested. The project lives in a single file including zero-dependency automated tests for all functionality that learners are tasked with implementing. Each piece of functionality should include multiple tests to provide sufficient example usage and verifiability.
Data files or other materials may also be included as appropriate.
Formatting
readme.md
Use these standard sections:
# Title: A brief, descriptive name for the lab## Learning Outcomes: Numbered list of skills students will gain## Usage: Example command line execution and expected output## Testing: Instructions for running automated tests## Tasks: Specific tasks for learners to complete## Resources: Technical details and requirements
makefile
Support these standard targets:
test: Run automated tests.run: Build and execute the program.clean: Remove build artifacts.
Example
readme.md
# CSV Stats
This program parses a CSV file of breakfast cereals to compute basic statistics.
## Learning Outcomes
After completing this experience, learners will be able to:
1. Parse text files to extract data fields
2. Use compound data types for representation
3. Implement arithmetic calculations on datasets
## Usage
Once compiled, you can run your program as:
```
./showstats
```
Output includes a number of tests to ensure the program works correctly followed by a number of extremely useful breakfast cereal statistics.
## Testing
The code includes a number of embedded tests that can be run using:
```
make test
```
Tasks
-----
1. Implement `load_cereals`
2. Implement `get_calories_avg`
3. Implement `get_protein_max`
4. Implement `get_protein_per_calorie_max`
Resources
---------
In order to complete this implementation, you will load the rows of the CSV file into an array of [structs](https://en.wikibooks.org/wiki/C_Programming/Advanced_data_types#Structs). This will give you practice using more advanced compound data types. You will also be using [functions](https://en.wikibooks.org/wiki/C_Programming/Procedures_and_functions) and [pointers](https://en.wikibooks.org/wiki/C_Programming/Pointers_and_arrays). `string.h` has been included, and you are welcome to use the functions it provides.
makefile
all: showstats
showstats: showstats.c
gcc $< -Wall -o $@
test: showstats
./showstats
clean:
rm -f showstats
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.