nickel-concentration-risk-analyzer
npx skills add https://github.com/fatfingererr/macro-skills --skill nickel-concentration-risk-analyzer
Agent 安装分布
Skill 文档
<essential_principles> é³ä¾çµ¦éä¸åº¦åæ æ ¸å¿åå
ææåæå¿ é å 確å®å£å¾ï¼ä¸åå£å¾æå°è´æ¸éç´å·®ç°ï¼
| å£å¾ | 說æ | å ¸åæ¸å¼å·®ç° |
|---|---|---|
t_Ni_content |
é³é屬å«éï¼æ¬ Skill é è¨ï¼ | åºæºå¼ |
t_ore_wet |
ç¤¦ç³æ¿å¸ | å¯é 50-100x |
t_NPI_product |
NPI ç¢åå¸ | ç´ 10-15% Ni |
t_matte |
é³é¶å¸ | ç´ 75% Ni |
å¼·å¶è¦åï¼
- è¥è¼¸å
¥æ¸æå£å¾ä¸æç¢ºï¼å¿
é æ¨è¨çº
model_estimate - åä¸åæä¸ä¸å¾æ··ç¨ä¸åå£å¾æ¸æ
- 輸åºå¿
é å
å«
unitæ¬ä½
é³ä¾çµ¦éåéæ®µå¿ é åéè¨ç®ï¼
Mine Production (mined) â Intermediate (NPI/Matte/MHP) â Refined (class1/class2)
- mined: ç¤¦å ´ç¢éï¼é³é屬å«éï¼
- refined: ç²¾ç ç¢éï¼å«å¶ç ï¼
- ãå°å°¼ 60% å¸ä½ãé常æ mined nickel content
| Tier | ç¹æ§ | 便º | ç¨é |
|---|---|---|---|
| 0 | å è²»ãç©©å®ãå£å¾ä¸è´ | USGS MCS, INSG | Baseline 主幹 |
| 1 | å è²»ä½åæ£ãéæ´å | å ¬å¸å¹´å ±ãè²¡å ± | Mine-level é¨é» |
| 2 | ä»è²»ãæ´å³æå®æ´ | S&P Global MI | 精度é©èãå°é½å£å¾ |
| 3 | æ¿ç/é é¡è¿æè¨æ¯ | æ°èã宿¹å ¬å | æ å¢è¼¸å ¥ |
åªå é åºï¼Tier 0 å»ºç« baseline â Tier 1 è£å mine-level â Tier 2 é©è精度
æ¿çæ¸ç¢ä¸é 100% å·è¡å³å¯é æè¡æãé è¨æ¨¡åï¼
expected_cut = cut_value * execution_prob # é è¨ execution_prob = 0.5
ä¸å±¤è¼¸åºï¼
- Hard cut: æ¿çå®å ¨è½å°
- Half success: å·è¡ 50%ï¼ææå®å¼ï¼
- Soft landing: åªå»¶é²æç¢/åªç æ°å¢ç¢è½
| ææ¨ | å ¬å¼ | è§£è® |
|---|---|---|
| Country Share | country_prod / global_prod |
å®å使¯ |
| CR_n | Σ top_n_share |
å N å/礦éä¸åº¦ |
| HHI | Σ share² |
å¸å ´éä¸åº¦ï¼0-10000ï¼ |
| Policy Leverage | cut_amount / global_prod |
æ¿ç坿¬åçå ¨çä¾çµ¦æ¯ä¾ |
HHI å¤è®ï¼< 1500 ä½éä¸ã1500-2500 ä¸çã> 2500 é«éä¸ </essential_principles>
- Analyze – åæå ¨çé³ä¾çµ¦çµæ§èéä¸åº¦ææ¨ï¼CR_n, HHI, country shareï¼
- Scenario – æ¨¡æ¬æ¿ç/æ¸ç¢æ å¢å°ä¾çµ¦çè¡æï¼RKABé é¡ãåºå£éå¶çï¼
- Validate – é©èå¸å ´èªªæ³çæ¸æå£å¾è便ºå¯é 度
- Ingest – å¾åæ¸ææºæ·åä¸¦æ¨æºåé³ä¾çµ¦æ¸æ
çå¾ åæå¾åç¹¼çºã
è®å工使µç¨å¾ï¼è«å®å ¨éµå¾ªå ¶æ¥é©ã
<reference_index>
åèæä»¶ (references/)
| æä»¶ | å §å®¹ |
|---|---|
| data-sources.md | æææ¸æä¾æºè©³ç´°èªªæè URL |
| unit-conversion.md | å®ä½è½æè¦åèåè¨ |
| concentration-metrics.md | éä¸åº¦ææ¨è©³ç´°è¨ç®æ¹æ³ |
| indonesia-supply-structure.md | å°å°¼é³ä¾çµ¦çµæ§èééµåå |
| mine-level-anchors.md | 主è¦ç¤¦å/ååç¢éé¨é» |
| failure-modes.md | å¤±ææ¨¡å¼èç·©è§£çç¥ |
| </reference_index> |
<workflows_index>
| Workflow | Purpose |
|---|---|
| analyze.md | ä¾çµ¦çµæ§èéä¸åº¦åæï¼CR_n, HHI, shareï¼ |
| scenario-engine.md | æ¿çæ å¢è¡ææ¨¡æ¬ |
| validate-sources.md | æ¸æä¾æºèå£å¾é©è |
| ingest.md | æ¸ææ·åèæ¨æºå |
| </workflows_index> |
<templates_index>
| Template | Purpose |
|---|---|
| output-json.md | JSON 輸åºçµæ§æ¨¡æ¿ |
| output-markdown.md | Markdown å ±åæ¨¡æ¿ |
| config.yaml | åæåæ¸é ç½®æ¨¡æ¿ |
| data-schema.yaml | æ¸æ Schema å®ç¾© |
| </templates_index> |
<scripts_index>
| Script | Purpose |
|---|---|
| nickel_pipeline.py | æ ¸å¿æ¸æç®¡ç· |
| ingest_sources.py | æ¸æä¾æºæ·å |
| compute_concentration.py | éä¸åº¦ææ¨è¨ç® |
| scenario_impact.py | æ å¢è¡ææ¨¡æ¬ |
| visualize_concentration.py | éä¸åº¦åæè¦è¦ºåå表 |
| visualize_scenario.py | æ å¢è¡æè¦è¦ºåå表 |
| </scripts_index> |
<quick_start> CLI å¿«ééå§ï¼
# åæç¶åå
¨çé³ä¾çµ¦éä¸åº¦
python scripts/nickel_pipeline.py analyze --asof=2026-01-16 --scope=mined
# çæéä¸åº¦è¦è¦ºåå表ï¼è¼¸åºå° output/ ç®éï¼æªåå
嫿¥æï¼
python scripts/visualize_concentration.py
# 模æ¬å°å°¼æ¸ç¢ 20% çæ
å¢è¡æ
python scripts/nickel_pipeline.py scenario --cut=20 --target=Indonesia --exec-prob=0.5
# çææ
å¢è¡æè¦è¦ºåå表
python scripts/visualize_scenario.py
# é©èãå°å°¼ 60% å¸ä½ãçæ¸æä¾æº
python scripts/nickel_pipeline.py validate --claim="Indonesia 60% share"
Library å¿«ééå§ï¼
from nickel_pipeline import NickelConcentrationAnalyzer
analyzer = NickelConcentrationAnalyzer(
asof_date="2026-01-16",
scope={"supply_type": "mined", "unit": "t_Ni_content"},
data_level="free_nolimit"
)
# è¨ç®éä¸åº¦ææ¨
result = analyzer.compute_concentration()
print(f"Indonesia share: {result['indonesia_share_2024']:.1%}")
print(f"HHI: {result['hhi_2024']:.0f}")
</quick_start>
<success_criteria> Skill æåå·è¡æï¼
- æ£ç¢ºè奿¸æå£å¾ï¼mined/refined/nickel contentï¼
- 輸åºå å« unit æ¬ä½æ¨è¨»
- éä¸åº¦ææ¨è¨ç®æ£ç¢ºï¼share, CR_n, HHIï¼
- æ å¢åæè¼¸åºä¸å±¤çµæï¼hard/half/softï¼
- æ¸æä¾æºå¯è¿½æº¯ï¼source_id, confidenceï¼
- å®ä½è¦åæ£ç¢ºè§¸ç¼ï¼ore vs contentï¼ </success_criteria>
<input_schema> è¼¸å ¥åæ¸å®ç¾©
# å¿
è¦åæ¸
asof_date: string (ISO) # åæåºæºæ¥
horizon:
history_start_year: int
history_end_year: int
forecast_end_year: int
# ç¯å忏
scope:
supply_type: string # mined | refined | nickel_content (å¿
å¡«)
product_group: string # class1 | class2 | NPI | matte | MHP | mixed (é¸å¡«)
countries: array[string] # é è¨: Indonesia, Philippines, Russia, Canada, Australia, Other
# æ
å¢åæ¸ (scenario workflow å°ç¨)
policy_scenarios:
- name: string
target_country: string # é è¨: Indonesia
policy_variable: string # ore_quota_RKAB | mine_permit | export_rule | smelter_capacity
cut_type: string # pct_global | pct_country | absolute
cut_value: number
start_year: int
end_year: int
execution_prob: number # 0-1, é è¨ 0.5
# æ¸æçç´
data_level: string # free_nolimit | free_limit | paid_low | paid_high
</input_schema>
<data_pipeline_architecture> æ¸ææµæ°´ç·æ¶æ§
[Data Sources]
|
v
+-------------------+
| ingest_sources | --> Tier 0: USGS, INSG
+-------------------+ Tier 1: Company reports
| Tier 2: S&P Global (optional)
v
+-------------------+
| normalize | --> çµ±ä¸ schema + å®ä½æ¨è¨»
+-------------------+ (year, country, supply_type, value, unit, source_id)
|
v
+-------------------+
| compute_concentration | --> share, CR_n, HHI
+-------------------+
|
v
+-------------------+
| scenario_impact | --> expected_cut, global_hit_pct
+-------------------+
|
v
+-------------------+
| generate_output | --> JSON + Markdown
+-------------------+
|
v
[Analysis Result]
æ¨æºåæ¬ä½ Schemaï¼
| æ¬ä½ | é¡å | 說æ |
|---|---|---|
| year | int | 年度 |
| country | string | åå®¶ |
| supply_type | string | mined/refined |
| product_group | string | NPI/matte/MHP/class1… |
| value | float | æ¸å¼ |
| unit | string | t_Ni_content / t_ore_wet / t_NPI_product |
| source_id | string | USGS/INSG/S&P/Company/Other |
| confidence | float | 便ºå質è©å (0-1) |
| </data_pipeline_architecture> |