bot-forge 1.0.1

Rust CLI for installing agent skills and developer tools from configurable forms.
Documentation
(function(){
  "use strict";
  if("scrollRestoration" in history) history.scrollRestoration="manual";
  const progress=document.getElementById("scrollProgress");
  const header=document.querySelector(".site-header");
  const reveals=[...document.querySelectorAll(".reveal")];
  const navLinks=[...document.querySelectorAll(".site-header nav a")];
  const sections=navLinks.map(link=>({link,target:document.querySelector(link.getAttribute("href"))})).filter(x=>x.target);
  const lifecycle=document.getElementById("behind");
  const performance=document.getElementById("team-value");
  const layerRail=document.getElementById("layerRail");
  const railStatus=document.getElementById("railStatus");
  const layerLinks=[...document.querySelectorAll(".layer-rail [data-layer]")];
  const layerSections=[...document.querySelectorAll("[data-layer-section]")];
  const labels={overview:"04 · 工程链入口",select:"05 · 目标展开",acquire:"06 · 获取阶段",dag:"07 · 依赖图",resource:"08 · 资源准入",optimize:"09 · 动态分配",feedback:"10 · 运行反馈",complete:"11 · 验证提交"};
  const observer=new IntersectionObserver(entries=>entries.forEach(entry=>{if(entry.isIntersecting){entry.target.classList.add("visible");observer.unobserve(entry.target);}}),{threshold:.12,rootMargin:"0px 0px -7% 0px"});
  reveals.forEach((item,index)=>{item.style.transitionDelay=`${Math.min(index%5,3)*45}ms`;observer.observe(item);});
  function update(){
    const scrollable=document.documentElement.scrollHeight-innerHeight;
    progress.style.width=`${scrollable>0?Math.min(100,Math.max(0,scrollY/scrollable*100)):0}%`;
    header.classList.toggle("scrolled",scrollY>20);
    let active=null; sections.forEach(item=>{if(item.target.getBoundingClientRect().top<=innerHeight*.38)active=item;});
    navLinks.forEach(link=>link.classList.toggle("active",Boolean(active&&link===active.link)));
    const started=lifecycle&&lifecycle.getBoundingClientRect().top<=innerHeight*.45;
    layerRail?.classList.toggle("visible",Boolean(started));
    const complete=performance&&performance.getBoundingClientRect().top<=innerHeight*.42;
    let activeLayer=null; layerSections.forEach(section=>{if(section.getBoundingClientRect().top<=innerHeight*.42)activeLayer=section.dataset.layerSection;});
    const activeIndex=layerLinks.findIndex(link=>link.dataset.layer===activeLayer);
    layerLinks.forEach((link,index)=>{link.classList.toggle("active",index===activeIndex&&!complete);link.classList.toggle("passed",complete||(activeIndex>=0&&index<activeIndex));});
    layerRail?.classList.toggle("complete",Boolean(complete));
    if(railStatus)railStatus.textContent=complete?"后台工作已完整揭示":activeLayer?labels[activeLayer]:"一次安装 · 准备开始";
  }
  addEventListener("scroll",update,{passive:true}); addEventListener("resize",update,{passive:true});
  addEventListener("load",()=>{if(!location.hash||location.hash==="#top")scrollTo(0,0);else document.querySelector(location.hash)?.scrollIntoView();update();});
  update();
})();