소스 정보
- 저장소
- ForceInjection/domain-driven-design-skills
- 최근 소스 활동
- 2026년 5월 8일 03:07
- 감지된 SKILL.md 언어
- 영어
- 스타
- 25
- 포크
- 7
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/ForceInjection/domain-driven-design-skills --skill type-checker-tests명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Conduct deep academic research for philosophy, neuroscience, cognitive science, and theoretical computer science (computability, complexity, AI theory, logic). Use when user asks to: research academic topics, find scholarly papers, conduct literature reviews, analyze citations, synthesize research findings, explore philosophical arguments, investigate consciousness/cognition, study computability/decidability/Turing machines, or analyze academic debates. Triggers on: 'research papers', 'literature review', 'academic sources', 'scholarly articles', 'philosophy of mind', 'computability theory', 'neuroscience studies', 'find papers on', 'what does the research say'.
Create clear action plans with steps, success criteria, and risk awareness. Use before implementing features, making changes, starting projects, or anytime you need a roadmap to success. Triggers on "plan this", "how should we approach", "what's the strategy", "steps to complete", or when facing complex multi-step work.
Add keyboard navigation to a feature using CommandRegistryService. Use when implementing keyboard shortcuts, vim-style navigation, or hotkeys for a page or component.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | type-checker-tests |
| description | Add integration tests for type checker inference and checking functions |
| allowed-tools | Bash(mkdir:*) |
Use this skill when adding new type checker functions or expanding behavior.
Language: Test fixtures use PureScript syntax, not Haskell.
| Action | Command |
|---|---|
| Find next test number | ls tests-integration/fixtures/checking/ | tail -5 |
| Run a test or multiple tests | just tc NNN or just tc 101 102 |
| Run with tracing enabled | just tc --debug NNN |
| Run all checking tests | just tc |
| Accept all pending snapshots | cargo insta accept |
Use just tc --help for all options.
mkdir tests-integration/fixtures/checking/{NNN_descriptive_name}
Tests are auto-discovered by build.rs - no manual registration needed.
Standard pattern - pair typed (checking) and untyped (inference) variants:
module Main where
-- Checking mode: explicit signature constrains type checker
test :: Array Int -> Int
test [x] = x
-- Inference mode: type checker infers unconstrained
test' [x] = x
Guidelines:
test, test', test2, test2', etc.just tc NNN
This outputs:
CREATED path (green) with numbered lines showing full contentUPDATED path (yellow) with chunked diff (2 lines context, line numbers)For testing imports, re-exports, or cross-module behavior, add multiple .purs files
to the same fixture directory. The type checker loads all .purs files in the folder.
Example structure:
tests-integration/fixtures/checking/NNN_import_test/
├── Main.purs # The test file (snapshot generated for Main)
├── Lib.purs # Supporting module
└── Main.snap # Generated snapshot
Lib.purs:
module Lib where
life :: Int
life = 42
data Maybe a = Just a | Nothing
Main.purs:
module Main where
import Lib (life, Maybe(..))
test :: Maybe Int
test = Just life
Key points:
Lib.purs -> module Lib where)Main.purs generates a snapshot (the test runs against Main)Snapshots have this structure:
Terms
functionName :: InferredOrCheckedType
...
Types
TypeName :: Kind
...
Errors
ErrorKind { details } at [location]
Before accepting, verify:
Types are correct - Check that inferred types match expectations
test :: Array Int -> Int - explicit signature preservedtest' :: forall t. Array t -> t - polymorphism inferred correctlyNo unexpected ??? - This indicates inference failure
test :: ??? - STOP: the term failed to type checkCannotUnify { ??? -> ???, Int } - OK in error tests, shows unresolved unification variablesErrors appear where expected - For tests validating error behavior
NoInstanceFound, CannotUnify)Polymorphism is appropriate
t6, a, etc.) are scoped correctly| Symptom | Likely Cause |
|---|---|
test :: ??? | Test code has syntax error or uses undefined names |
| Unexpected monomorphism | Missing polymorphic context or over-constrained signature |
| Wrong error location | Check binder/expression placement in source |
| Missing types in snapshot | Module header or imports incorrect |
# Accept only after thorough review
cargo insta accept
# Verify all checking tests pass
just tc
When investigating a potential compiler bug:
# Focus on single test to reduce noise
just tc NNN
# Enable tracing to see type checker behaviour
just tc --debug NNN
The --debug flag emits detailed type checker traces to target/compiler-tracing/.
Trace file naming: {test_id}_{module_name}.jsonl
200_int_compare_transitive_Main.jsonlOutput format: JSON Lines (one JSON object per line), containing:
timestamp - when the event occurredlevel - DEBUG, INFO, or TRACEfields - trace data (e.g., types being unified)target - the module emitting the trace (e.g., checking::algorithm::unification)span/spans - current span and span stackExample trace line:
{"timestamp":"...","level":"DEBUG","fields":{"t1":"?0","t2":"Int"},"target":"checking::algorithm::unification","span":{"name":"unify"}}
When --debug is used, the trace file path is shown alongside pending snapshots:
UPDATED tests-integration/fixtures/checking/200_int_compare_transitive/Main.snap
TRACE target/compiler-tracing/200_int_compare_transitive_Main.jsonl
Trace files can be large for complex tests. Use sampling and filtering:
# Check file size and line count
wc -l target/compiler-tracing/NNN_*.jsonl
# Sample random lines to get an overview
shuf -n 20 target/compiler-tracing/NNN_*.jsonl | jq .
# Filter by level
jq 'select(.level == "DEBUG")' target/compiler-tracing/NNN_*.jsonl
# Filter by target module
jq 'select(.target | contains("unification"))' target/compiler-tracing/NNN_*.jsonl
# Extract specific fields
jq '{level, target, fields}' target/compiler-tracing/NNN_*.jsonl
You should run just tc to check for regressions.